Это может быть очень простой вопрос, но я не могу найти что-либо в этом онлайн-режиме.
Если я создаю таблицу образцов:
create table dummy ( id int not null, data json );
Затем, если я запрашиваю таблицу, используя следующий запрос:
select * from dummy where data->'x' = 10;
Теперь, поскольку в таблице еще нет записей, и в любой записи нет такого свойства, как "x", оно должно возвращать нулевые результаты.
Но я получаю следующую ошибку:
postgres=# select * from dummy where data->'x' = 10;
ERROR: operator does not exist: json = integer
LINE 1: select * from dummy where data->'x' = 10;
Однако следующий запрос работает:
select * from dummy where cast(data->>'x' as integer) = 10;
Я что-то упустил, или typecasting - единственный способ получить целочисленное значение из поля json? Если это так, не влияет ли это на производительность, когда данные становятся чрезвычайно большими?