JSON_OBJECT (Transact-SQL)
適用対象: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed Instance
0 個以上の式から JSON オブジェクト テキストを構築します。
構文
JSON_OBJECT ( [ <json_key_value> [,...n] ] [ json_null_clause ] )
<json_key_value> ::= json_key_name : value_expression
<json_null_clause> ::=
NULL ON NULL
| ABSENT ON NULL
引数
json_key_name JSON キー名の値を定義する文字式です。
value_expression JSON キーの値を定義する式です。
json_null_clause value_expression が NULL の場合に、JSON_OBJECT 関数の動作を制御するために使用できます。 オプション NULL ON NULL を使用すると、JSON キー値を生成するときに、SQL NULL 値が JSON NULL 値に変換されます。 値が NULL の場合、オプション ABSENT ON NULL を使用すると、キー全体が省略されます。 このオプションの既定の設定は、NULL ON NULL です。
JSON_OBJECT
関数の出力に表示される内容の詳細については、次の記事を参照してください。
FOR JSON が SQL Server データ型を JSON データ型に変換する方法 (SQL Server)
JSON_OBJECT
関数では、FOR JSON
に関するこの記事で説明されている規則を使用して、JSON オブジェクト出力内で SQL データ型を JSON 型に変換します。FOR JSON での特殊文字のエスケープと制御文字 (SQL Server)
JSON_OBJECT
関数を使用すると、FOR JSON
に関するこの記事で説明されている JSON 出力の特殊文字がエスケープされ、制御文字が表されます。
戻り値
nvarchar(max) 型の有効な JSON オブジェクト文字列を返します。
解説
例
例 1
次の例では、空の JSON オブジェクトを返します。
SELECT JSON_OBJECT();
結果
{}
例 2
次の例では、2 つのキーを持つ JSON オブジェクトを返します。
SELECT JSON_OBJECT('name':'value', 'type':1)
結果
{"name":"value","type":1}
例 3
次の例では、いずれかのキーの値が NULL であり、ABSENT ON NULL オプションが指定されているため、1 つのキーを持つ JSON オブジェクトを返します。
SELECT JSON_OBJECT('name':'value', 'type':NULL ABSENT ON NULL)
結果
{"name":"value"}
例 4
次の例では、2 つのキーを持つ JSON オブジェクトを返します。 1 つのキーには JSON 文字列が含まれており、もう 1 つのキーには JSON 配列が含まれています。
SELECT JSON_OBJECT('name':'value', 'type':JSON_ARRAY(1, 2))
結果
{"name":"value","type":[1,2]}
例 5
次の例では、2 つのキーを持つ JSON オブジェクトを返します。 1 つのキーには JSON 文字列が含まれており、もう 1 つのキーには JSON オブジェクトが含まれています。
SELECT JSON_OBJECT('name':'value', 'type':JSON_OBJECT('type_id':1, 'name':'a'))
結果
{"name":"value","type":{"type_id":1,"name":"a"}}
例 6
次の例では、入力が変数または SQL 式として指定されている JSON オブジェクトを返します。
DECLARE @id_key nvarchar(10) = N'id',@id_value nvarchar(64) = NEWID();
SELECT JSON_OBJECT('user_name':USER_NAME(), @id_key:@id_value, 'sid':(SELECT @@SPID))
結果
{"user_name":"dbo","id":"E2CBD8B4-13C1-4D2F-BFF7-E6D722F095FD","sid":63}
例 7
次の例では、クエリの行ごとに、JSON オブジェクトを返します。
SELECT s.session_id, JSON_OBJECT('security_id':s.security_id, 'login':s.login_name, 'status':s.status) as info
FROM sys.dm_exec_sessions AS s
WHERE s.is_user_process = 1;
結果
session_id | info |
---|---|
51 | {"security_id":"AQYAAAAAAAVQAAAAY/0dmFnai5oioQHh9eNArBIkYd4=","login":"NT SERVICE\\SQLTELEMETRY$SQL22" ,"status":"sleeping"} |
52 | {"security_id":"AQUAAAAAAAUVAAAAoGXPfnhLm1/nfIdwAMgbAA==","login":WORKGROUP\\sqluser","status":"running"} |
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示