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
|
| Список | 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 по дате отправления: