假设我的jsonb列中有这个json
{
"fields": [
{
"name": "firstName",
},
{
"name": "lastName",
},
...
}
我怎么知道“名字”是否已经存在?
到目前为止,我已经尝试过了
SELECT field->>'fields'
from person where (field->'name')::jsonb ? 'firstName';
答案 0 :(得分:3)
select field->>'fields'
from person
where field->'fields' @> '[{"name": "firstName"}]'
答案 1 :(得分:1)
您可以使用json_array_elements
生成字段元素,以便您可以基于'name'
进行过滤。
SELECT field->>'fields', obj.*
from person, jsonb_array_elements_text(field->'fields') obj
where obj = '{"name": "firstName"}'
请参阅dbfiddle