搭配使用 OPENJSON 與預設結構描述
適用於: SQL Server 2016 (13.x) 以上版本 Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics
搭配使用 OPENJSON 與預設結構描述來傳回一份資料表,其中物件的每個屬性或陣列中的每個項目都會有一個資料列。
以下是搭配使用 OPENJSON 與預設結構描述的一些範例。 如需詳細資訊和其他範例,請參閱 OPENJSON (Transact-SQL)。
範例 - 傳回物件的每個屬性
查詢
SELECT *
FROM OPENJSON('{"name":"John","surname":"Doe","age":45}')
結果
Key | 值 |
---|---|
NAME | John |
surname | Doe |
age | 45 |
範例 - 傳回陣列的每個元素
查詢
SELECT [key],value
FROM OPENJSON('["en-GB", "en-UK","de-AT","es-AR","sr-Cyrl"]')
結果
Key | 值 |
---|---|
0 | en-GB |
1 | en-UK |
2 | de-AT |
3 | es-AR |
4 | sr-Cyrl |
範例 - 將 JSON 轉換成暫存資料表
下列查詢會傳回 info 物件的所有屬性。
DECLARE @json NVARCHAR(MAX)
SET @json=N'{
"info":{
"type":1,
"address":{
"town":"Bristol",
"county":"Avon",
"country":"Great Britain"
},
"tags":["Sport", "Water polo"]
},
"type":"Basic"
}'
SELECT *
FROM OPENJSON(@json,N'lax $.info')
結果
Key | 值 | 類型 |
---|---|---|
type | 1 | 0 |
address | { "town":"Bristol", "county":"Avon", "country":"Great Britain" } | 5 |
tags | [ "Sport", "Water polo" ] | 4 |
範例 - 合併關聯式資料和 JSON 資料
在下列範例中,SalesOrderHeader 資料表的 SalesReason 文字資料行包含 JSON 格式的 SalesOrderReasons 陣列。 SalesOrderReasons 物件包含「製造商」和「品質」這類屬性。此範例所建立的報表會聯結每個銷售訂單資料列與相關銷售原因,方法是展開銷售原因的 JSON 陣列,就像原因是儲存在個別子資料表中一樣。
SELECT SalesOrderID,OrderDate,value AS Reason
FROM Sales.SalesOrderHeader
CROSS APPLY OPENJSON(SalesReasons)
在此範例中,OPENJSON 會傳回原因顯示為值欄位的銷售原因資料表。 CROSS APPLY 運算子會聯結每個銷售訂單資料列與 OPENJSON 資料表值函數所傳回的資料列。
深入了解 SQL Server 和 Azure SQL Database 中的 JSON
Microsoft 影片
如需 SQL Server 和 Azure SQL Database 中內建 JSON 支援的觀看式簡介,請參閱下列影片: