此SQL语句的postgres语句是什么。
SELECT * FROM table1 where JSON_VALUE(colB,'$.Items[0].Item') ='abc'
我尝试遵循postgres文件,但结果没有函数匹配给定的名称和参数类型
这样的事情。
SELECT t.*
FROM table1 t
cross join json_array_elements(colb->'Items') as j
where j->>'Item' = 'abc'
您可以使用->
operator访问索引中的元素。
->
SELECT *
FROM table1
where colb -> 'Items' -> 0 ->> 'Item' = 'abc'
返回colb -> 'Items' -> 0
的第一个数组元素作为JSON值。然后Items
从该JSON值中返回键->> 'Item'
,并将其作为"Item"
(又称varchar)值返回。
这要求将text
定义为colb
(或至少为jsonb
)。如果没有,则需要强制转换:
json
但是从长远来看,您实际上应该将该列转换为SELECT *
FROM table1
where colb::jsonb -> 'Items' -> 0 ->> 'Item' = 'abc'
。
使用Postgres 12,您可以像使用JSON路径查询一样:
jsonb