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
см. в следующих статьях.
Как FOR JSON преобразует типы данных SQL Server в типы данных JSON (SQL Server)
ФункцияJSON_ARRAY
использует правила, описанные в статьеFOR JSON
, для преобразования типов данных SQL в типы JSON в выходных данных массива JSON.Как FOR JSON экранирует специальные символы и управляющие символы (SQL Server)
ФункцияJSON_ARRAY
экранирует специальные знаки и представляет управляющие символы в выходных данных JSON, как описано в статьеFOR JSON
.
Примеры
Пример 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"] |