I have JSON like
{
"url": {
"web_categories": [{ "id": 226 } , { "id": 401 }]
},
"account":"Basic"
}
I would like to output in SQL a column that contains the IDs of all web_categories a URL was matched to.
| webcat |
|--------|
| 226 |
| 401 |
Using SQL Server 2016 / Azure SQL DB's support for JSON, how would one achieve that?
Reproducible example
DECLARE @jsonInfo VARCHAR(MAX)
SET @jsonInfo =N'{
"url": {
"web_categories": [{ "id": 226 }]
},
"account":"Basic"
}'
Previous iterations
select * from openjson(@jsonInfo) with (webcat varchar(12) '$.url.web_categories.id[0]')
select * from openjson(@jsonInfo) with (webcat varchar(12) '$.url.web_categories.id')
select * from openjson(@jsonInfo) with (webcat varchar(12) '$.url.web_categories')
select * from openjson(@jsonInfo,'$.url.web_categories.id[0]')
select * from openjson(@jsonInfo,'$.url.web_categories.id')
select * from openjson(@jsonInfo,'$.url.web_categories')
select JSON_QUERY(@jsonInfo, '$.url.web_categories.id[0]') webcat
select JSON_QUERY(@jsonInfo, '$.url.web_categories.id') webcat
select JSON_QUERY(@jsonInfo, '$.url.web_categories') webcat
select JSON_VALUE(@jsonInfo, '$.url.web_categories.id[0]') webcat
select JSON_VALUE(@jsonInfo, '$.url.web_categories.id') webcat
select JSON_VALUE(@jsonInfo, '$.url.web_categories') webcat