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)