Compartir vía


ISJSON (Transact-SQL)

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Azure SQL Database Azure SQL Instancia administrada punto de conexión de SQL Analytics de Azure Synapse Analytics en Microsoft Fabric Warehouse en Microsoft Fabric

Prueba si una cadena contiene un valor JSON válido.

Convenciones de sintaxis de Transact-SQL

Sintaxis

ISJSON ( expression [, json_type_constraint] )  

Argumentos

expression

Cadena que se va a comprobar.

json_type_constraint

Especifica el tipo JSON para comprobar en la entrada. Los valores válidos son VALUE, ARRAY, OBJECT o SCALAR. Introducido en SQL Server 2022 (16.x).

Nota

El argumento json_type_constraint no se puede usar en grupos dedicados de Azure Synapse Analytics

Valor devuelto

Devuelve 1 si la cadena contiene un valor JSON válido; en caso contrario, devuelve 0. Devuelve NULL si expression es null.

Si la instrucción omite json_type_constraint, la función comprueba si la entrada es un objeto o matriz JSON válidos y devuelve 1; de lo contrario, devuelve 0.

Si se especifica json_type_constraint, la función comprueba el tipo JSON de la siguiente manera:

Valor Descripción
VALUE Comprueba si hay un valor JSON válido. Puede ser un objeto JSON, una matriz, un número, una cadena o uno de los tres valores literales (false, true, null)
ARRAY Pruebas de una matriz JSON válida
OBJECT Pruebas de un objeto JSON válido
SCALAR Pruebas de un valor escalar JSON válido: número o cadena

El valor SCALAR json_type_constraint puede utilizarse para comprobar si un documento JSON conforme a la RFC 8259 del IETF contiene solo un valor escalar JSON en el nivel superior. Un documento JSON que no contiene un valor escalar JSON en el nivel superior se ajusta a la RFC 4627 del IETF.

No devuelve errores.

Comentarios

ISJSON no comprueba la unicidad de las claves en el mismo nivel.

Ejemplos

Ejemplo 1

En el siguiente ejemplo se ejecuta un bloque de instrucciones de forma condicional si el valor del parámetro @param contiene un valor JSON válido.

DECLARE @param <data type>
SET @param = <value>

IF (ISJSON(@param) > 0)  
BEGIN  
     -- Do something with the valid JSON value of @param.  
END

Ejemplo 2

En el ejemplo siguiente, se devuelven las filas en las que la columna json_col contiene JSON válido.

SELECT id, json_col
FROM tab1
WHERE ISJSON(json_col) = 1 

Ejemplo 3

En el ejemplo siguiente, se devuelven las filas en las que la columna json_col contiene un valor SCALAR JSON válido en el nivel superior.

SELECT id, json_col
FROM tab1
WHERE ISJSON(json_col, SCALAR) = 1 

Ejemplo 4

En el ejemplo siguiente se devuelve 1, ya que la entrada es un valor JSON válido: true.

SELECT ISJSON('true', VALUE)

Ejemplo 5

En el ejemplo siguiente se devuelve 0, ya que la entrada es un valor JSON no válido.

SELECT ISJSON('test string', VALUE)

Ejemplo 6

En el ejemplo siguiente se devuelve 1, ya que la entrada es un valor escalar JSON válido según RFC 8259.

SELECT ISJSON('"test string"', SCALAR)