如何在不指定数组索引的情况下过滤数组值
这是我的数组{
"level1":{
"level2":[
{
"level3":"test",
}
]
}
}
我想检索包含level3 a值测试的所有行。像这样
select * from Documents
where Json_Value(DocumentInfo, '$.level1.level2[X].level3') = 'test'
它不可能在Sql Server?
猜测位在这里,但使用EXISTS
?这也假设JSON是有效的,因为您的问题中的JSON不是:
SELECT * --Should be a distinct column list
FROM dbo.Documents D
WHERE EXISTS (SELECT 1
FROM OPENJSON(D.DocumentInfo)
WITH (level1 nvarchar(MAX) AS JSON) L1
CROSS APPLY OPENJSON(L1.Level1)
WITH(level2 nvarchar(MAX) AS JSON) L2
CROSS APPLY OPENJSON(L2.Level2)
WITH (level3 varchar(10)) L3
WHERE L3.level3 = 'test');