用于JSON_VALUE的Postgres语句

问题描述 投票:0回答:2

此SQL语句的postgres语句是什么。

SELECT * FROM table1 where JSON_VALUE(colB,'$.Items[0].Item') ='abc'

我尝试遵循postgres文件,但结果没有函数匹配给定的名称和参数类型

postgresql
2个回答
0
投票

这样的事情。

SELECT t.*
     FROM table1  t
    cross join json_array_elements(colb->'Items') as j
where j->>'Item' = 'abc'

DEMO


0
投票

您可以使用-> 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
© www.soinside.com 2019 - 2024. All rights reserved.