前言

Microsoft SQL Server 2016 版本開始對於 JSON 資料型態提供多種語法上的支援,在這一篇我們將簡單介紹與比較 JSON_VALUE 與 JSON_QUERY 之間的差異。本篇文章若有錯誤或任何建議,請各位先進不令指教。

關鍵字:JSON_VALUEJSON_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 PATH
2.[Database][SQL Server] SQL Server 2016 新語法 - ISJSON 、 JSON_MODIFY 與 OPENJSON
3.[Database][SQL Server] SQL Server 2016 新語法 - DROP IF EXISTS