적용 대상:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft 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 함수는 특수 문자를 이스케이프하고 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
다음 예제에서는 키 중 하나에 대한 값이 NULL이고 ABSENT ON NULL 옵션이 지정되어 있기 때문에 하나의 키가 있는 JSON 개체를 반환합니다.
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
다음 예제에서는 변수 또는 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}