SQL - JSON_QUERY() 函式



內建的 SQL JSON_QUERY() 函式用於從 JSON 物件中提取資料。該函式用於從 JSON 字串或表中的列中提取標量(單個)值或整個 JSON 物件。

如果 JSON_QUERY() 在找到路徑之前發現表示式中無效的 JSON,則會返回錯誤;如果它不是物件或陣列,則會以不同的模式返回值,例如 -

  • 在寬鬆模式下,JSON_QUERY 返回 null。

  • 在嚴格模式下,JSON_QUERY 返回錯誤。

語法

以下是 SQL JSON_QUERY() 函式的語法 -

JSON_QUERY ( expression [ , path ] )

引數

  • expression - 它通常是包含 JSON 文字的列或變數的名稱。

  • path - 指定要提取的屬性的 JSON 路徑。JSON 路徑可以是寬鬆或嚴格模式進行解析。如果未指定解析模式,則預設使用寬鬆模式。

示例

讓我們使用以下查詢從 JSON 變數中檢索第一個客戶 -

DECLARE @work VARCHAR(4000);
SET @work = N'{"customers":
   [
      {"Name": "HELLO", "Age": 23, "Department": "Mechnical"},
      {"Name": "WORLD", "Age": 25, "Department": "BBA"}
   ]
}';
SELECT JSON_QUERY(@work, '$.customers[0]') AS Result;

輸出

當我們執行上述查詢時,將獲得如下輸出 -

+---------------------------------------------------------+
|                                                Result   |
+---------------------------------------------------------+
| {"Name": "HELLO", "Age": 23, "Department": "Mechnical"} |
+---------------------------------------------------------+

示例

在下面的示例中,我們將指定寬鬆路徑模式以返回標量值,並且它返回 NULL,因為 JSON_QUERY() 不執行標量值,因為它僅返回物件和陣列 -

SELECT JSON_QUERY('{"car": "RX100"}', 'lax $.car') AS 'Result';

輸出

當我們執行上述查詢時,將獲得如下輸出 -

+------------------------------------+
|                              Result|
+------------------------------------+
|                               NULL |
+------------------------------------+

示例

讓我們考慮另一種情況,我們將使用嚴格路徑模式並使用以下查詢獲取輸出 -

SELECT JSON_QUERY('{"car": "RX100"}', 'strict $.car') AS 'Result';

輸出

當我們執行上述查詢時,將獲得如下輸出 -

Object or array cannot be found in the specified JSON path.

示例

讓我們看一下下面的示例,我們將使用以下查詢提取列 -

DECLARE @work VARCHAR(150)
   = '{"Item":"Iphone 13",
      "Price":70000,
      "Color":["Green", "Pink", "White"]}'
SELECT JSON_QUERY(@work,'$.Color') AS Result

輸出

執行上述查詢後,將顯示如下輸出 -

+----------------------------------------------+
|                                       Result |
+----------------------------------------------+
|                   ["Green", "Pink", "White"] |
+----------------------------------------------+

示例

讓我們考慮另一種情況,我們將從 JSON 字串中檢索標量值並使用以下查詢檢查結果 -

DECLARE @work VARCHAR(150)
   = '{"Item":"Iphone 13",
   "Price":70000,
   "Color":["Green", "Pink", "White"]}'
SELECT JSON_QUERY(@work,'$.Item') AS Result

輸出

執行上述查詢後,將顯示如下輸出 -

+------------------------------------+
|                              Result|
+------------------------------------+
|                               NULL |
+------------------------------------+

示例

讓我們看一下下面的示例,我們將使用以下查詢檢索完整的 JSON 字串 -

DECLARE @work VARCHAR(150)
   = '{"Item":"Iphone 13",
   "Price":70000,
   "Color":["Green", "Pink", "White"]}'
SELECT JSON_QUERY(@work,'$') AS Result

輸出

執行上述查詢後,將顯示如下輸出 -

+----------------------------------------------------------------------------------------------------------------+
|                                                                                               Result           |
+----------------------------------------------------------------------------------------------------------------+
| {"Item":"Iphone 13",              "Price":70000,             "Color":["Green", "Pink", "White"]}               |
+----------------------------------------------------------------------------------------------------------------+
sql-json-functions.htm
廣告