SQL - JSON_ARRAY() 函式



SQL 的JSON_ARRAY()函式接受一個表示式或一個用逗號分隔的表示式列表,並返回一個包含這些值的 JSON 陣列。在 SELECT 語句中,可以將幾種型別的選擇項與 JSON ARRAY 結合使用。其他允許使用 SQL 函式的位置(例如 WHERE 子句)也允許指定 JSON ARRAY。

JSON ARRAY 將每個陣列元素的值作為字串(帶雙引號)或數字返回。返回數字的格式是規範的。作為文字,返回用雙引號括起來的數字字串。所有其他資料型別(如日期和 $List)的返回值都是字串。JSON_ARRAY 不支援 COUNT(*) 聚合函式。

語法

以下是 SQL JSON_ARRAY() 函式的語法:

JSON_ARRAY ( [ <json_array_value> [,...n] ] [ <json_null_clause> ]  )  
<json_array_value> ::= value_expression
<json_null_clause> ::=
   NULL ON NULL
   | ABSENT ON NULL

引數

  • json_array_value − 它是一個表示式,指示 JSON 陣列中元素的值。

  • json_null_clause − 用於控制當值表示式為 NULL 時 JSON_OBJECT 函式的行為。NULL ON NULL 選項在生成 JSON_ARRAY 的值時將 SQL NULL 值轉換為 JSON NULL。ABSENT ON NULL 選項如果其值為 NULL,則會從 JSON 陣列中省略該元素。此選項的預設設定為“Absent on Null”。

示例

讓我們使用以下查詢檢索空 JSON 陣列:

SELECT JSON_ARRAY() AS Result;

輸出

當我們執行上述查詢時,輸出如下所示:

+------------------------------------+
|                              Result|
+------------------------------------+
|                                []  |
+------------------------------------+

示例

讓我們檢索表示式中傳遞的所有 JSON_ARRAY 值,使用以下查詢:

SELECT JSON_ARRAY('abc', 14, 'bcd', 3) AS Result;

輸出

當我們執行上述查詢時,輸出如下所示:

+------------------------------------+
|                              Result|
+------------------------------------+
|                 ["abc",14,"bcd",3] |
+------------------------------------+

示例

讓我們來看另一個示例,我們將使用 NULL 作為輸入值,該值會否定 null 值,並在 JSON_ARRAY 中返回其他輸入值。因為 json_null_clause 被省略,並且其預設值為 ABSENT ON NULL,所以 NULL 值不會轉換為 JSON null 值:

SELECT JSON_ARRAY('abc', 14, 'bcd', NULL) AS Result;

輸出

當我們執行上述查詢時,輸出如下所示:

+------------------------------------+
|                              Result|
+------------------------------------+
|                   ["abc",14,"bcd"] |
+------------------------------------+

示例

讓我們考慮另一種情況,我們將使用 NULL ON NULL 選項,該選項有助於將任何 SQL NULL 值轉換為 JSON null 值,並使用以下查詢檢索輸出:

SELECT JSON_ARRAY('aBC', 14, NULL, 3 NULL ON NULL) AS Result;

輸出

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

+------------------------------------+
|                              Result|
+------------------------------------+
|                  ["aBC",14,null,3] |
+------------------------------------+

示例

讓我們考慮另一個示例,我們將使用以下查詢檢索包含 JSON 字串的一個元素和 JSON 物件的另一個元素的 JSON_ARRAY:

SELECT JSON_ARRAY('ABC', JSON_OBJECT('car':'RX100', 'type':2)) AS Result;

輸出

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

+------------------------------------+
|                              Result|
+------------------------------------+
|   ["ABC",{"car":"RX100","type":2}] |
+------------------------------------+

示例

考慮另一種情況,我們將使用以下查詢檢索包含 JSON 字串的一個元素、JSON 物件的另一個元素以及包含 JSON 陣列的另一個元素的 JSON_ARRAY:

SELECT JSON_ARRAY('TP', JSON_OBJECT('course':'HTML', 'type':2), JSON_ARRAY(145, null, 6 NULL ON NULL)) AS Result;

輸出

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

+----------------------------------------------+
|                                       Result |
+----------------------------------------------+
|["TP",{"course":"HTML","type":2},[145,null,6]]|
+----------------------------------------------+

示例

讓我們看一下以下示例,我們將使用以下查詢將輸入指定為變數或 SQL 表示式:

DECLARE @work varchar(64) = NEWID();
SELECT JSON_ARRAY(1, @work, (SELECT @@SPID)) AS Result;

輸出

上述查詢的輸出如下所示:

+----------------------------------------------+
|                                       Result |
+----------------------------------------------+
|[1,"1DAC88DD-BE4E-45C7-BEA1-6FAF3EE86EE0",73] |
+----------------------------------------------+
sql-json-functions.htm
廣告