如何检查 json 数组是否已包含某个键?
How to check if json array already contains a certain key?
假设我的 jsonb 列中有这个 json
{
"fields": [
{
"name": "firstName",
},
{
"name": "lastName",
},
...
}
我怎么知道 "firstName" 是否已经存在?
到目前为止我已经试过了
SELECT field->>'fields'
from person where (field->'name')::jsonb ? 'firstName';
您可以使用 json_array_elements
生成字段元素,以便您可以根据 'name'
.
进行过滤
SELECT field->>'fields', obj.*
from person, jsonb_array_elements_text(field->'fields') obj
where obj = '{"name": "firstName"}'
select field->>'fields'
from person
where field->'fields' @> '[{"name": "firstName"}]'
假设我的 jsonb 列中有这个 json
{
"fields": [
{
"name": "firstName",
},
{
"name": "lastName",
},
...
}
我怎么知道 "firstName" 是否已经存在?
到目前为止我已经试过了
SELECT field->>'fields'
from person where (field->'name')::jsonb ? 'firstName';
您可以使用 json_array_elements
生成字段元素,以便您可以根据 'name'
.
SELECT field->>'fields', obj.*
from person, jsonb_array_elements_text(field->'fields') obj
where obj = '{"name": "firstName"}'
select field->>'fields'
from person
where field->'fields' @> '[{"name": "firstName"}]'