適用於:SQL Server 2016 (13.x) 及以後版本
Azure SQL 資料庫
Azure SQL Managed Instance
Azure Synapse Analytics(僅限 serverless SQL pool 使用)
SQL Analytics endpoint in Microsoft Fabric
Warehouse in Microsoft Fabric
SQL database in Microsoft Fabric
搭配明確架構使用 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": 假 } | {“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
如需內建 JSON 支援的視覺效果簡介,請參閱下列影片: