sql - 如何检查json数组是否已经包含某个键?

标签 sql json postgresql jsonb

假设我的 jsonb 列中有这个 json

{
  "fields": [
    {
      "name": "firstName",
    },
    {
      "name": "lastName",
    },
    ...
}

我如何知道“firstName”是否已经存在?

到目前为止我已经尝试过了

SELECT field->>'fields' 
from person where (field->'name')::jsonb ? 'firstName';

最佳答案

使用containment operator @> :

select field->>'fields'
from person
where field->'fields' @> '[{"name": "firstName"}]'

关于sql - 如何检查json数组是否已经包含某个键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58496651/

相关文章:

c++ - 如何将结构属性转换为 C++ 中的指针引用?

postgresql - 在 PostgreSQL 中重新排序列对记录大小有什么影响?

sql - 将记录平均分成组

SQL - 如果加入期间日期不匹配 - 更改日期然后加入

javascript - 按时间戳对 JSON 数据进行排序

mysql - 为什么按以下方式使用 AVG() 和 ROUND() 函数不起作用?

javascript - 如何使用 angularjs 填充 json 数据?

postgresql - Postgres 中的 GROUP BY 和 array_agg

mysql - JOIN 2 Tables 和 SELECT more cell

需要 SQL 数据库设计建议