共用方式為


JSON_OBJECT (Transact-SQL)

適用於:sql Server Azure SQL 資料庫 Azure SQL 受控執行個體 Microsoft Fabric Microsoft Fabric SQL 資料庫中Microsoft網狀架構倉儲中的 SQL 分析端點

語法會 JSON_OBJECT 從零個或多個表達式建構 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

可用來控制函數在 JSON_OBJECT value_expression為 NULL時的行為。 此選項 NULL ON NULL 會在產生 JSON 索引鍵值時,將 SQL NULL 值轉換為 JSON 空值。 如果值為 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 函式會逸出特殊字元,並在 JSON 輸出中代表控制字元,如本 FOR JSON 文中所描述。

Examples

範例 1

下列範例會傳回空白 JSON 物件。

SELECT JSON_OBJECT();

Result

{}

範例 2

下列範例會傳回具有兩個索引鍵的 JSON 物件。

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

Result

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

範例 3

下列範例會傳回具有一個索引鍵的 JSON 物件,因為其中一個索引鍵的值是 NULL,並且指定了 ABSENT ON NULL 選項。

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

Result

{"name":"value"}

範例 4

下列範例會傳回具有兩個索引鍵的 JSON 物件。 一個索引鍵包含 JSON 字串,另一個索引鍵則包含 JSON 陣列。

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

Result

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

範例 5

下列範例會傳回具有兩個索引鍵的 JSON 物件。 一個索引鍵包含 JSON 字串,另一個索引鍵則包含 JSON 物件。

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

Result

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

範例 6

下列範例會傳回 JSON 物件,其中包含指定為變數或 SQL 運算式的輸入。

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”:“睡眠”}
52 {"security_id":"AQUAAAAAAAUVAAAAoGXPfnhLm1/nfIdwAMgbAA==","login":WORKGROUP\\sqluser","status":"running"}

範例 8

下列範例會傳回 JSON 物件作為 json 類型。

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

Result

{"a":1}