Compartir a través de


ISJSON (Transact-SQL)

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics sql analytics endpointin Microsoft FabricWarehouse in Microsoft FabricSQL Database in Microsoft Fabric SQL Database in Microsoft Fabric

La ISJSON sintaxis comprueba si una cadena contiene json válido.

Convenciones de sintaxis de Transact-SQL

Syntax

ISJSON ( expression [, json_type_constraint] )  

Arguments

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).

Note

El argumento json_type_constraint no se admite 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álido y devuelve 1 de lo contrario, devuelve 0.

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

Value Description
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 de json_type_constraint SCALAR se puede usar para probar el documento JSON compatible con IETF RFC 8259 que 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.

Remarks

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

Examples

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)