DB2 JSON_EXISTS 和 json 路径问题:查询未返回预期结果

问题描述 投票:0回答:1

我正在使用 IBM Db2(版本 11.5),并且尝试查询存储在名为 data 的列中的 JSON 数据,该列包含对象数组。但是,我使用 JSON_EXISTS 的查询没有返回预期结果。

JSON 结构示例

JSON 结构(此处简化)包含一个数组 field7,我需要检索 field7 中存在对象且 field11 等于“target”的行。但是,我使用 JSON_EXISTS 的查询没有返回预期结果。

数据列中存储的简化 JSON 数据如下所示:

{
  "randomField1": "randomValue",
  ...
  "outerField":
    [
      {
        "innerField": "target"
      },
      {
        "innerField": "dummy1"
      },
      {
        "innerField": "dummy2"
      }
    ]
}

使用 Json 路径和 JSON_EXIST

我想使用 JSON Path,并使用在线评估工具,我发现这个查询应该可以工作:

$.outerField[?(@.innerField== "target")].

鉴于我不能直接使用 JSON_VALUE 和 json 路径,例如:

JSON_VALUE(data, '$.outerField[*].innerField') = 'target'

因为 JSON_VALUE 只需要一个值(outerField[0].innerFieldworks 如预期)。

我认为我可以使用 Db2 的 JSON_EXISTS 函数:

SELECT *
FROM test_entity
WHERE JSON_EXISTS(
    data,
    '$.outerField[?(@.innerField== "target")]'
)

不幸的是,即使示例 JSON 清楚地显示了outerField 中的对象,且innerField 等于“target”,也不会返回任何行。

有什么想法或建议吗?

sql db2 jsonpath
1个回答
0
投票
SELECT * FROM test_entity
where json_exists(data, '$?(@.outerField[*].innerField == "target")') ;
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.