次の方法で共有


JSON_OBJECT(Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウスMicrosoft Fabric の SQL データベース

JSON_OBJECT構文は、0 個以上の式から JSON オブジェクト テキストを構築します。

Syntax

JSON_OBJECT ( [ <json_key_value> [ , ...n ] ] [ json_null_clause ] [ RETURNING json ] )

<json_key_value> ::= json_key_name : value_expression

<json_null_clause> ::=
      NULL ON NULL
    | ABSENT ON NULL

Arguments

json_key_name

JSON キー名の値を定義する文字式。

value_expression

JSON キーの値を定義する式。

json_null_clause

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

戻り値

nvarchar(max) 型の有効な JSON オブジェクト文字列を返します。 RETURNING json オプションが含まれている場合、JSON オブジェクトは json 型として返されます。

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

[アーティクル] Description
FOR JSON が SQL Server データ型を JSON データ型に変換する方法 JSON_OBJECT 関数では、FOR JSON に関するこの記事で説明されている規則を使用して、JSON オブジェクト出力内で SQL データ型を JSON 型に変換します。
FOR JSON が特殊文字と制御文字をエスケープする方法 JSON_OBJECT 関数を使用すると、FOR JSON に関するこの記事で説明されている JSON 出力の特殊文字がエスケープされ、制御文字が表されます。

Examples

例 1

次の例では、空の JSON オブジェクトを返します。

SELECT JSON_OBJECT();

Result

{}

例 2

次の例では、2 つのキーを持つ JSON オブジェクトを返します。

SELECT JSON_OBJECT('name':'value', 'type':1);

Result

{"name":"value","type":1}

例 3

次の例では、いずれかのキーの値が NULL であり、ABSENT ON NULL オプションが指定されているため、1 つのキーを持つ JSON オブジェクトを返します。

SELECT JSON_OBJECT('name':'value', 'type':NULL ABSENT ON NULL);

Result

{"name":"value"}

例 4

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

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

Result

{"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'));

Result

{"name":"value","type":{"type_id":1,"name":"a"}}

例 6

次の例では、入力が変数または SQL 式として指定されている JSON オブジェクトを返します。

DECLARE @id_key AS NVARCHAR (10) = N'id', @id_value AS NVARCHAR (64) = NEWID();
SELECT JSON_OBJECT('user_name':USER_NAME(), @id_key:@id_value, 'sid':(SELECT @@SPID));

Result

{"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;

Result

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"}

例 8

次の例では、JSON オブジェクトを json 型として返します。

SELECT JSON_OBJECT("a":1 RETURNING json);

Result

{"a":1}