다음을 통해 공유


JSON_OBJECT(Transact-SQL)

적용 대상: SQL Server 2022(16.x) Azure SQL 데이터베이스 Azure 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_null_clause를 사용하여 JSON_OBJECT 함수의 동작을 제어할 수 있습니다. NULL ON NULL 옵션은 JSON 키 값을 생성할 때 SQL NULL 값을 JSON null 값으로 변환합니다. 값이 ABSENT ON NULL인 경우 NULL 옵션이 전체 키를 생략합니다. 이 옵션의 기본 설정은 NULL ON NULL입니다.

반환 값

nvarchar(max) 형식의 유효한 JSON 개체 문자열을 반환합니다.

JSON_OBJECT 함수의 출력에 나타나는 자세한 내용은 다음 문서를 참조하세요.

예제

예 1

다음 예에서는 빈 JSON 개체를 반환합니다.

SELECT JSON_OBJECT();

결과

{}

예제 2

다음 예제에서는 두 개의 키가 있는 JSON 개체를 반환합니다.

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

결과

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

예제 3

다음 예제에서는 키 중 하나에 대한 값이 NULL이고 ABSENT ON NULL 옵션이 지정되어 있기 때문에 하나의 키가 있는 JSON 개체를 반환합니다.

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

결과

{"name":"value"}

예시 4

다음 예제에서는 두 개의 키가 있는 JSON 개체를 반환합니다. 한 키에는 JSON 문자열이 포함되고 다른 키에는 JSON 배열이 포함됩니다.

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

결과

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

예시 5

다음 예제에서는 두 개의 키가 있는 JSON 개체를 반환합니다. 한 키에는 JSON 문자열이 포함되고 다른 키에는 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"}