JSON 到 SQL 服务器:将值的子数组转换为列
JSON to SQL Server: Convert sub-array of values to column
我JSON喜欢
{
"url": {
"web_categories": [{ "id": 226 } , { "id": 401 }]
},
"account":"Basic"
}
我想在 SQL 中输出一列,其中包含所有 web_categories
的 ID 与 URL 匹配。
| webcat |
|--------|
| 226 |
| 401 |
使用 SQL Server 2016 / Azure SQL 数据库对 JSON 的支持,如何实现?
可重现的例子
DECLARE @jsonInfo VARCHAR(MAX)
SET @jsonInfo =N'{
"url": {
"web_categories": [{ "id": 226 }]
},
"account":"Basic"
}'
之前的迭代
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
使用默认架构,返回的记录带有 value
列,其中包含数组中每个项目的 JSON。这个JSON然后需要处理
DECLARE @jsonInfo VARCHAR(MAX)
SET @jsonInfo =N'{
"url": {
"web_categories": [{ "id": 226 },{ "id": 411 }]
},
"account":101
}'
SELECT JSON_VALUE(value,'$.id') AS ids FROM OPENJSON(@jsoninfo,'$.url.web_categories')
我JSON喜欢
{
"url": {
"web_categories": [{ "id": 226 } , { "id": 401 }]
},
"account":"Basic"
}
我想在 SQL 中输出一列,其中包含所有 web_categories
的 ID 与 URL 匹配。
| webcat |
|--------|
| 226 |
| 401 |
使用 SQL Server 2016 / Azure SQL 数据库对 JSON 的支持,如何实现?
可重现的例子
DECLARE @jsonInfo VARCHAR(MAX)
SET @jsonInfo =N'{
"url": {
"web_categories": [{ "id": 226 }]
},
"account":"Basic"
}'
之前的迭代
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
使用默认架构,返回的记录带有 value
列,其中包含数组中每个项目的 JSON。这个JSON然后需要处理
DECLARE @jsonInfo VARCHAR(MAX)
SET @jsonInfo =N'{
"url": {
"web_categories": [{ "id": 226 },{ "id": 411 }]
},
"account":101
}'
SELECT JSON_VALUE(value,'$.id') AS ids FROM OPENJSON(@jsoninfo,'$.url.web_categories')