如何在Sql Server中过滤Json中的数组值



如何在不指定数组索引的情况下过滤数组值

这是我的数组
{   
"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');

相关内容

  • 没有找到相关文章

最新更新