我在jsonb中有一个名为"lines"的列,其中包含许多如下所示的对象:
[
{
"a" : "1",
"b" : "2",
"c" : "3"
},
{
"a" : "4",
"b" : "5",
"c" : "6"
}
]
这是我的疑问
SELECT *
FROM public.test
WHERE public.test.lines::jsonb ? '[{"c"}]'
在我的查询中,我只想获取数组中包含"c"键的行,但执行后什么也没有
我在jsonb中有一个名为"lines"的列,其中包含许多如下所示的对象:
[
{
"a" : "1",
"b" : "2",
"c" : "3"
},
{
"a" : "4",
"b" : "5",
"c" : "6"
}
]
这是我的疑问
SELECT *
FROM public.test
WHERE public.test.lines::jsonb ? '[{"c"}]'
在我的查询中,我只想获取数组中包含"c"键的行,但执行后什么也没有
2条答案
按热度按时间yx2lnoni1#
快速解决方案:
sulc1iza2#
?
运算符只适用于字符串,不适用于json对象,如果你想测试数组元素中是否包含值为c
的键,你可以使用JSON路径 predicate :