JSON_ARRAY (Transact-SQL)
適用対象:Sql Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric
Warehouse の 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_expression
が NULL
されている場合 JSON_OBJECT
関数の動作を制御するために使用できます。 オプション NULL ON NULL
を使用すると、JSON 配列内の要素の値を生成するときに、SQL NULL
値が JSON NULL
値に変換されます。
ABSENT ON NULL
オプションは、値が NULL
場合、JSON 配列内の要素を省略します。 このオプションの既定の設定は ABSENT ON NULL
です。
戻り値
nvarchar(max) 型の有効な JSON 配列文字列を返します。
JSON_ARRAY
関数の出力に表示される内容の詳細については、次の記事を参照してください。
FOR JSON が SQL Server データ型を JSON データ型に変換する方法 (SQL Server)
JSON_ARRAY
関数では、FOR JSON
に関するこの記事で説明されている規則を使用して、JSON 配列出力内で SQL データ型を JSON 型に変換します。FOR JSON での特殊文字のエスケープと制御文字 (SQL Server)
JSON_ARRAY
関数を使用すると、FOR JSON
に関するこの記事で説明されている JSON 出力の特殊文字がエスケープされ、制御文字が表されます。
例
例 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"] |