Поделиться через


JSON_OBJECT (Transact-SQL)

Применимо к:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL AzureКонечная точка аналитики SQL в Microsoft FabricХранилище в Microsoft FabricБаза данных SQL в предварительной версии Microsoft Fabric

Синтаксис JSON_OBJECT создает текст объекта JSON из нуля или нескольких выражений.

Syntax

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

Arguments

json_key_name

Символьное выражение, определяющее значение имени ключа JSON.

value_expression

Выражение, определяющее значение ключа JSON.

json_null_clause

Можно использовать для управления поведением функции JSON_OBJECT при value_expression NULL. NULL ON NULL Параметр преобразует значение SQL NULL в значение JSON NULL при создании значения ключа JSON. Если значение равно ABSENT ON NULLзначению, параметр NULL опустит весь ключ. Параметр по умолчанию для этого параметра.NULL ON NULL

Return value

Возвращает допустимую строку объекта JSON типа nvarchar(max ).

Дополнительные сведения о выходных данных функции JSON_OBJECT см. в следующих статьях.

Examples

Example 1

В следующем примере возвращается пустой объект JSON.

SELECT JSON_OBJECT();

Result

{}

Example 2

В следующем примере возвращается объект JSON с двумя ключами.

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

Result

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

Example 3

В следующем примере возвращается объект JSON с одним ключом, так как значение для одного из ключей — NULL и ABSENT ON NULL указан параметр.

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

Result

{"name":"value"}

Example 4

В следующем примере возвращается объект JSON с двумя ключами. Один ключ содержит строку JSON, а другой ключ — массив JSON.

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

Result

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

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

Example 6

В следующем примере возвращается объект JSON с входными данными, указанными в виде переменных или выражений SQL.

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))

Result

{"user_name":"dbo","id":"E2CBD8B4-13C1-4D2F-BFF7-E6D722F095FD","sid":63}

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