sql - PostgreSQL json路径表达式以查找具有特定键的第一个数组元素

标签 sql json postgresql postgresql-12

我需要一个 jsonpath 表达式,它返回具有“key”属性的数组的第一个元素。
我正在寻找与此查询相同的结果:

SELECT
  j
FROM
jsonb_array_elements(
    '[
      {"key": "foo"},
      {"other": "bar"},
      {"key":  "baz", "other": "blah"}
    ]'::JSONB
) j
WHERE
  j ? 'key'
LIMIT 1
我的查询目前看起来像这样,但不起作用
SELECT
    jsonb_path_query(
      '[
        {"key": "foo"},
        {"other": "bar"},
        {"key":  "baz", "other": "blah"}
      ]'::JSONB,
      '$[?(@.key)] [0]')

最佳答案

请看这个:https://www.postgresql.org/docs/12/functions-json.html#FUNCTIONS-SQLJSON-PATH-OPERATORS

SELECT
    jsonb_path_query_first(
      '[
        {"key": "foo"},
        {"other": "bar"},
        {"key":  "baz", "other": "blah"}
      ]'::JSONB,
      '$[*] ? (exists (@.key))')
;

 jsonb_path_query_first 
------------------------
 {"key": "foo"}
(1 row)

关于sql - PostgreSQL json路径表达式以查找具有特定键的第一个数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62674961/

相关文章:

sql - 填补时间线空白的窗口函数

php - MYSQL - 用于 SQL 查询的正则表达式

mysql - 使用 SQL 比较两个表中标识符的计数

mysql - SQL 小时平均 24 小时

javascript - 如何从 JSON 对象中获取数据?

postgresql - 无法使用 DBeaver 连接到本地 postgresql 数据库

c# - 单行子查询返回多行 Oracle 数据库

json - 从 Swift 中选定的下拉选项中获取数据

jQuery JSON .each 错误

sql - PostgreSQL array_agg(整数[])