次の方法で共有


JSON_ARRAY (Transact-SQL)

適用対象:Sql ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft FabricWarehouse の SQL 分析エンドポイント

0 個以上の式から JSON 配列テキストを構築します。

構文

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

value_expressionNULLされている場合 JSON_OBJECT 関数の動作を制御するために使用できます。 オプション NULL ON NULL を使用すると、JSON 配列内の要素の値を生成するときに、SQL NULL 値が JSON NULL 値に変換されます。 ABSENT ON NULL オプションは、値が NULL場合、JSON 配列内の要素を省略します。 このオプションの既定の設定は ABSENT ON NULL です。

戻り値

nvarchar(max) 型の有効な JSON 配列文字列を返します。

JSON_ARRAY 関数の出力に表示される内容の詳細については、次の記事を参照してください。

例 1

次の例では、空の JSON 配列を返します。

SELECT JSON_ARRAY();

結果

[]

例 2

次の例では、4 つの要素を持つ JSON 配列を返します。

SELECT JSON_ARRAY('a', 1, 'b', 2)

結果

["a",1,"b",2]

例 3

次の例では、入力値の 1 つが NULLされているため、3 つの要素を含む JSON 配列が返されます。 json_null_clause は省略され、このオプションの既定値は ABSENT ON NULLされているため、入力の 1 つの NULL 値は JSON null 値に変換されません。

SELECT JSON_ARRAY('a', 1, 'b', NULL)

結果

["a",1,"b"]

例 4

次の例では、4 つの要素を持つ JSON 配列を返します。 NULL ON NULL オプションを指定すると、入力内の SQL NULL 値が JSON 配列内の JSON null 値に変換されます。

SELECT JSON_ARRAY('a', 1, NULL, 2 NULL ON NULL)

結果

["a",1,null,2]

例 5

次の例では、2 つの要素を持つ JSON 配列を返します。 1 つの要素には JSON 文字列が含まれており、もう 1 つの要素には JSON オブジェクトが含まれています。

SELECT JSON_ARRAY('a', JSON_OBJECT('name':'value', 'type':1))

結果

["a",{"name":"value","type":1}]

例 6

次の例では、3 つの要素を持つ JSON 配列を返します。 1 つの要素には JSON 文字列が含まれており、別の要素には JSON オブジェクトが含まれており、別の要素には JSON 配列が含まれています。

SELECT JSON_ARRAY('a', JSON_OBJECT('name':'value', 'type':1), JSON_ARRAY(1, null, 2 NULL ON NULL))

結果

["a",{"name":"value","type":1},[1,null,2]]

例 7

次の例では、入力を変数または SQL 式として指定した JSON 配列を返します。

DECLARE @id_value nvarchar(64) = NEWID();
SELECT JSON_ARRAY(1, @id_value, (SELECT @@SPID));

結果

[1,"4BEA4F9F-D169-414F-AF99-9270FDB2EA62",55]

例 8

次の例では、クエリの行ごとに、JSON 配列を返します。

SELECT s.session_id, JSON_ARRAY(s.host_name, s.program_name, s.client_interface_name)
FROM sys.dm_exec_sessions AS s
WHERE s.is_user_process = 1;

結果

session_id info
52 ["WIN16-VM","Microsoft SQL Server Management Studio - Query",".Net SqlClient Data Provider"]
55 ["WIN16-VM","Microsoft SQL Server Management Studio - Query",".Net SqlClient Data Provider"]
56 ["WIN19-VM","SQLServerCEIP",".Net SqlClient Data Provider"]