다음을 통해 공유


JSON_ARRAY(Transact-SQL)

적용 대상: SQL Server 2022 (16.x) Azure SQL Database Azure SQL Managed Instance

0개 이상의 식에서 JSON 배열 텍스트를 생성합니다.

구문

JSON_ARRAY ( [ <json_array_value> [,...n] ] [ <json_null_clause> ]  )  

<json_array_value> ::= value_expression

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

인수

json_array_value

이는 JSON 배열의 요소 값을 정의하는 식입니다.

json_null_clause

value_expression이 NULL인 경우 사용하여 JSON_OBJECT 함수의 동작을 제어할 수 있습니다. NULL ON NULL 옵션은 JSON 배열에서 요소 값을 생성할 때 SQL NULL 값을 JSON null 값으로 변환합니다. 값이 NULL인 경우 ABSENT ON NULL 옵션은 JSON 배열의 요소를 생략합니다. 이 옵션의 기본 설정은 ABSENT ON NULL입니다.

반환 값

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

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

예제

예 1

다음 예에서는 빈 JSON 배열을 반환합니다.

SELECT JSON_ARRAY();

결과

[]

예제 2

다음 예제에서는 네 개의 요소가 있는 JSON 배열을 반환합니다.

SELECT JSON_ARRAY('a', 1, 'b', 2)

결과

["a",1,"b",2]

예 3

다음 예제에서는 입력 값 중 하나가 NULL이므로 세 개의 요소가 있는 JSON 배열을 반환합니다. json_null_clause이 생략되고 이 옵션의 기본값이 ABSENT ON NULL이므로 입력 중 하나의 NULL 값은 JSON null 값으로 변환되지 않습니다.

SELECT JSON_ARRAY('a', 1, 'b', NULL)

결과

["a",1,"b"]

예시 4

다음 예제에서는 네 개의 요소가 있는 JSON 배열을 반환합니다. 입력의 SQL NULL 값이 JSON 배열의 JSON null 값으로 변환되도록 NULL ON NULL 옵션이 지정됩니다.

SELECT JSON_ARRAY('a', 1, NULL, 2 NULL ON NULL)

결과

["a",1,null,2]

예시 5

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

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

결과

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

예제 6

다음 예제에서는 세 개의 요소가 있는 JSON 배열을 반환합니다. 한 요소에는 JSON 문자열이 포함되고 다른 요소에는 JSON 개체가 포함되며, 다른 요소에는 JSON 배열이 포함됩니다.

SELECT JSON_ARRAY('a', JSON_OBJECT('name':'value', 'type':1), JSON_ARRAY(1, null, 2 NULL ON NULL))

결과

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

예제 7

다음 예제에서는 변수 또는 SQL 식으로 지정된 입력이 있는 JSON 배열을 반환합니다.

DECLARE @id_value nvarchar(64) = NEWID();
SELECT JSON_ARRAY(1, @id_value, (SELECT @@SPID));

결과

[1,"4BEA4F9F-D169-414F-AF99-9270FDB2EA62",55]

예제 8

다음 예제에서는 쿼리에서 행당 JSON 배열을 반환합니다.

SELECT s.session_id, JSON_ARRAY(s.host_name, s.program_name, s.client_interface_name)
FROM sys.dm_exec_sessions AS s
WHERE s.is_user_process = 1;

결과

session_id info
52 ["WIN16-VM","Microsoft SQL Server Management Studio - Query",".Net SqlClient Data Provider"]
55 ["WIN16-VM","Microsoft SQL Server Management Studio - Query",".Net SqlClient Data Provider"]
56 ["WIN19-VM","SQLServerCEIP",".Net SqlClient Data Provider"]