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


JSON_ARRAY (Transact-SQL)

Область применения: SQL Server 2022 (16.x) База данных SQL Azure Управляемый экземпляр SQL Azure

Создает текст массива 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

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

Возвращаемое значение

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

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

Примеры

Пример 1

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

SELECT JSON_ARRAY();

Результат

[]

Пример 2

В следующем примере возвращается массив JSON с четырьмя элементами.

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

Результат

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

Пример 3

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

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

Результат

["a",1,"b"]

Пример 4

В следующем примере возвращается массив JSON с четырьмя элементами. Параметр NULL ON NULL задается таким образом, чтобы любое SQL значение NULL во входных данных преобразовывалось в значение JSON NULL в массиве JSON.

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

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

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"]