Re: ERROR: operator does not exist: json = json

Поиск
Список
Период
Сортировка
От Dagfinn Ilmari Mannsåker
Тема Re: ERROR: operator does not exist: json = json
Дата
Msg-id 87wncnizq8.fsf@wibble.ilmari.org
обсуждение исходный текст
Ответ на ERROR: operator does not exist: json = json  (Erik Rijkers <er@xs4all.nl>)
Ответы Re: ERROR: operator does not exist: json = json  (Andrew Dunstan <andrew@dunslane.net>)
Список pgsql-hackers
Erik Rijkers <er@xs4all.nl> writes:

> Hi,
>
> Comparison of 2 values of type jsonb is allowed.
>
> Comparison of 2 values of type json gives an error.
>
> That seems like an oversight -- or is it deliberate?

This is because json is just a textual representation, and different
JSON strings can be semantically equal because e.g. whitespace and
object key order is not significant.

> Example:
>
> select '42'::json = '{}'::json;
> --> ERROR:  operator does not exist: json = json
>
> (of course, easily 'solved' by casting but that's not really the
> point)

To do a proper comparison you have to parse it into a semantic form,
which is what casting to jsonb does.

> Thanks,
>
> Erik Rijkers

- ilmari



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Bharath Rupireddy
Дата:
Сообщение: Re: Add function to return backup_label and tablespace_map
Следующее
От: David Steele
Дата:
Сообщение: Re: Add function to return backup_label and tablespace_map