这可能是一个非常基本的问题,但我在网上找不到任何东西.
如果我创建一个示例表:
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;
我是不是漏掉了什么,或者类型转换是我从json字段中获取整数值的唯一方法?如果是这样的话,当数据变得非常大时,它不会影响性能吗?