适用于:SQL Server 2016 (13.x)及更高版本
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics(仅限无服务器 SQL 池)
Microsoft Fabric 中的 SQL 分析终结点
Microsoft Fabric 中的仓库
Microsoft Fabric 预览版中的 SQL 数据库
使用OPENJSON
显式架构,并按照WITH
子句中指定的格式返回表格。
下面是使用具有显式架构 OPENJSON
的一些示例。 有关详细信息,请参阅 OPENJSON(Transact-SQL)。
示例 - 使用 WITH 子句设置输出格式
以下查询返回下表中显示的结果。 请注意 AS JSON
子句如何使值作为 JSON 对象返回,而不是 col5
和 array_element
中的标量值。
DECLARE @json NVARCHAR(MAX) =
N'{"someObject":
{"someArray":
[
{"k1": 11, "k2": null, "k3": "text"},
{"k1": 21, "k2": "text2", "k4": { "data": "text4" }},
{"k1": 31, "k2": 32},
{"k1": 41, "k2": null, "k4": { "data": false }}
]
}
}'
SELECT * FROM
OPENJSON(@json, N'lax $.someObject.someArray')
WITH ( k1 int,
k2 varchar(100),
col3 varchar(6) N'$.k3',
col4 varchar(10) N'lax $.k4.data',
col5 nvarchar(MAX) N'lax $.k4' AS JSON,
array_element nvarchar(MAX) N'$' AS JSON
)
Results
k1 | k2 | col3 | col4 | col5 | array_element |
---|---|---|---|---|---|
11 | NULL | "text" | NULL | NULL | {“k1”: 11, “k2”: null, “k3”: “text”} |
21 | "text2" | NULL | "text4" | { “data”: “text4” } | {“k1”: true, “k2”: “text2”, “k4”: { “data”: “text4” } } } |
31 | "32" | NULL | NULL | NULL | {“k1”: 31, “k2”: 32 } |
41 | NULL | NULL | false | { “data”: false } | {"k1": 41, "k2": null, "k4": { "data": false } } |
示例 - 将 JSON 加载到 SQL Server 表中。
下面的示例展示了将整个 JSON 对象加载到 SQL Server 表中。
DECLARE @json NVARCHAR(MAX) = '{
"id" : 2,
"firstName": "John",
"lastName": "Smith",
"isAlive": true,
"age": 25,
"dateOfBirth": "2015-03-25T12:00:00",
"spouse": null
}';
INSERT INTO Person
SELECT *
FROM OPENJSON(@json)
WITH (id int,
firstName nvarchar(50), lastName nvarchar(50),
isAlive bit, age int,
dateOfBirth datetime2, spouse nvarchar(50))
详细了解 SQL 数据库引擎中的 JSON
有关内置 JSON 支持的视觉简介,请参阅以下视频: