JSON_ARRAY (Transact-SQL)
Se aplica a: SQL Server 2022 (16.x) Azure SQL Database Azure SQL Managed Instance
Construye texto de matriz JSON a partir de cero o más expresiones.
Sintaxis
JSON_ARRAY ( [ <json_array_value> [,...n] ] [ <json_null_clause> ] )
<json_array_value> ::= value_expression
<json_null_clause> ::=
NULL ON NULL
| ABSENT ON NULL
Argumentos
json_array_value
Es una expresión que define el valor del elemento en la matriz JSON.
json_null_clause
Se puede usar para controlar el comportamiento de la función JSON_OBJECT
cuando value_expression es NULL. La opción NULL ON NULL
convierte el valor NULL
de SQL en un valor null
de JSON al generar el valor del elemento en la matriz JSON. La opción ABSENT ON NULL
omitirá el elemento de la matriz JSON si el valor es NULL. La configuración predeterminada de esta opción es ABSENT ON NULL
.
Valor devuelto
Devuelve una cadena de matriz JSON válida de tipo nvarchar(max).
Para obtener más información sobre lo que se ve en la salida de la función JSON_ARRAY
, consulte los artículos siguientes:
Conversión por parte de FOR JSON de tipos de datos de SQL Server en tipos de datos JSON (SQL Server)
La funciónJSON_ARRAY
usa las reglas descritas en este artículo sobreFOR JSON
para convertir tipos de datos SQL a tipos JSON en la salida JSON.Cómo FOR JSON inserta caracteres de escape en los caracteres especiales y caracteres de control (SQL Server)
La funciónJSON_ARRAY
inserta un carácter de escape en los caracteres especiales y representa los caracteres de control en la salida JSON como se describe en este artículo sobreFOR JSON
.
Ejemplos
Ejemplo 1
En el siguiente ejemplo se devuelve una matriz JSON vacía.
SELECT JSON_ARRAY();
Resultado
[]
Ejemplo 2
En el siguiente ejemplo se devuelve una matriz JSON con cuatro elementos.
SELECT JSON_ARRAY('a', 1, 'b', 2)
Resultado
["a",1,"b",2]
Ejemplo 3
En el siguiente ejemplo se devuelve una matriz JSON con tres elementos, ya que uno de los valores de entrada es NULL. Como json_null_clause se omite y el valor predeterminado de esta opción es ABSENT ON NULL, el valor NULL de una de las entradas no se convierte en un valor NULL de JSON.
SELECT JSON_ARRAY('a', 1, 'b', NULL)
Resultado
["a",1,"b"]
Ejemplo 4
En el siguiente ejemplo se devuelve una matriz JSON con cuatro elementos. La opción NULL ON NULL se especifica para que cualquier valor NULL de SQL de la entrada se convierta en un valor NULL de JSON en la matriz JSON.
SELECT JSON_ARRAY('a', 1, NULL, 2 NULL ON NULL)
Resultado
["a",1,null,2]
Ejemplo 5
En el siguiente ejemplo se devuelve una matriz JSON con dos elementos. Un elemento contiene una cadena JSON y el otro, un objeto JSON.
SELECT JSON_ARRAY('a', JSON_OBJECT('name':'value', 'type':1))
Resultado
["a",{"name":"value","type":1}]
Ejemplo 6
En el siguiente ejemplo se devuelve una matriz JSON con tres elementos. Un elemento contiene una cadena JSON; otro, un objeto JSON, y otro, una matriz JSON.
SELECT JSON_ARRAY('a', JSON_OBJECT('name':'value', 'type':1), JSON_ARRAY(1, null, 2 NULL ON NULL))
Resultado
["a",{"name":"value","type":1},[1,null,2]]
Ejemplo 7
En el siguiente ejemplo se devuelve una matriz JSON con las entradas especificadas como variables o expresiones SQL.
DECLARE @id_value nvarchar(64) = NEWID();
SELECT JSON_ARRAY(1, @id_value, (SELECT @@SPID));
Resultado
[1,"4BEA4F9F-D169-414F-AF99-9270FDB2EA62",55]
Ejemplo 8
En el siguiente ejemplo se devuelve una matriz JSON por fila de la consulta.
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;
Resultado
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"] |