前言
Microsoft SQL Server 2016 版本開始對於 JSON 資料型態提供多種語法上的支援,在這一篇我們將簡單介紹與比較 JSON_VALUE 與 JSON_QUERY 之間的差異。本篇文章若有錯誤或任何建議,請各位先進不令指教。關鍵字:JSON_VALUE、JSON_QUERY、差異比較
介紹
JSON_VALUE若您對 JSON 格式不陌生,應該知道 JSON 格式基本的組成為 Key: Value,如下圖所示。
JSON_VALUE 函式能查詢 JSON 格式資料內 Value 的純量值。若 Value 並非純量值,而是 JSON Object 或 JSON Array,則可能回傳 NULL 或錯誤。
我們先建立一個簡單範例資料表與資料進行示範:
接下來簡單示範一下:透過下列語法簡單從 Note 欄位中,找出員工名稱是 Duran 資料
SELECT TOP (1000) [Id] ,[Name] ,[Salary] ,[Note] FROM [test].[dbo].[Employee] WHERE JSON_VALUE( Note, '$[0].Name') = 'Duran'
JSON_QUERY
JSON_QUERY 函式則能查詢 Value 內的 JSON 格式資料,若 Value 為純量值,則可能回傳 NULL 或錯誤。
我們一樣建立一個簡單範例資料表與資料進行示範:
透過下列語法...
SELECT TOP (1000) [Id] ,[Name] ,[Salary] ,[Note] FROM [test].[dbo].[Employee] WHERE JSON_VALUE( Note, '$[0].Name') = 'Duran'
差異比較
我們透過下列 JSON 資料,簡單比較 JSON_VALUE 與 JSON_QUERY 呈現效果之差異
{ "Id":1, "Name":"Duran", "Salary":1000, "Role":[ "developer", "QA" ] }
參考資料
1. 使用內建函數,驗證、查詢以及變更 JSON 資料 (SQL Server) - Microsoft Docs相關文章
1.[Database][SQL Server] SQL Server 2016 新語法 - FOR JSON AUTO 與 FOR JSON PATH2.[Database][SQL Server] SQL Server 2016 新語法 - ISJSON 、 JSON_MODIFY 與 OPENJSON
3.[Database][SQL Server] SQL Server 2016 新語法 - DROP IF EXISTS
0 留言