適用於: SQL Server 2016(13.x)和更新版本,
Azure SQL Database
Azure SQL 受控實例
Azure Synapse Analytics(僅無伺服器 SQL 資源集區)
在 Microsoft Fabric 中的 SQL 分析端點
在 Microsoft Fabric 中的 Warehouse
使用 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
)
結果
k1 | k2 | col3 | col4 | col5 | 陣列元素 |
---|---|---|---|---|---|
11 | NULL | 文本 | 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 | 假的 | { "data": 假 } | {"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 Database Engine 中的 JSON
如需 SQL Server 和 Azure SQL Database 中內建 JSON 支援的觀看式簡介,請參閱下列影片: