Json_query检查JSON列表中哪些行具有特殊值

时间:2019-01-26 19:15:00

标签: tsql json-query

我有一张表格,每一行都包含一个json列。在json列中,我有一个包含标签数组的对象。我想做的就是查看表中哪些行具有我要搜索的标签。

以下是我的数据示例:

Row 1: 

Id :xxx

Jsom Column:
{
 "tags":[
{"name":"blue dragon", weight:0.80},
{"name":"Game", weight:0.90}
]
}


Row 2:
Id : yyy

Jsom Column:
{
 "tags":[
{"name":"Green dragon", weight:0.70},
{"name":"fantasy", weight:0.80}
]
}

所以我想编写一个代码,如果我搜索Green,则仅返回第2行,如果我搜索Dragon,则返回第1行和第2行。

我知道我可以编写此代码来访问我的数组,但除此之外,我无能为力:\ 我正在寻找这样的东西

 Select * from myTable 
 where  JSON_query([JsonColumn], '$.tags[*].name') like '%dragon%'

更新

我的最终查询如下

select DISTINCT t.id, dv.[key], dv.value
from @t t
cross apply openjson(doc,'$.tags') as d
where json_Value( d.value,'$.name') like '%dragon%'

1 个答案:

答案 0 :(得分:1)

类似这样的东西:

onFocus