【发布时间】:2019-05-02 19:01:30
【问题描述】:
我有一些数据存储在 sql 列中,看起来像
{
"items": [
{ "ids": [4], "fromCompanyId": 4 },
{ "ids": [6, 1], "fromCompanyId": 1 }
]
}
现在我想创建一个 where 子句来查找所有“fromCompanyId”为“4”的“项目”。
到目前为止我发现的只是
WHERE JSON_VALUE(jsonInfo,'$.info.address[0].state') LIKE 'US%'
但他们对数组索引进行了硬编码。我需要找到所有匹配项。
我也在尝试 openJson 但仍然无法正常工作
where 4 in (select fromCompanyId from openjson(Details, '$.items.fromCompanyId') WITH( [fromCompanyId] int '$.fromCompanyId')))
【问题讨论】:
-
你在一月份没有问过同样的问题吗? stackoverflow.com/questions/54014774/… 使用 OPENJSON 的答案似乎与此相关。
-
它很相似,但那是一个字符串数组。这是 json 对象数组,当我尝试 openJson 时它不起作用,所以我可能做错了。
-
@JamieD77 - 我查看了该链接,但仍然无法为我工作,所以我可能做错了。我更新了我的 OP。
-
openjson(Details, '$.items') WITH( [fromCompanyId] int '$.fromCompanyId')))
标签: json sql-server sql-server-2017