У меня есть таблица, в которой каждая строка содержит столбец 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}
]
}
Итак, я хочу написать код, который, если я ищу Грин, возвращает только строку 2, а если я ищу дракона, он возвращает обе строки 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%'