Al usar SQL Server, puede usar ISJSON()
función para probar si una expresión de cadena contiene JSON válido o no.
Si la expresión contiene JSON válido, ISJSON()
devuelve 1
, de lo contrario devuelve 0
.
Sintaxis
La sintaxis es así:
ISJSON ( expression )
Donde expression
es la expresión de cadena para la que está probando JSON válido.
Ejemplo 1:JSON válido
Aquí hay un ejemplo para demostrar lo que sucede cuando la cadena contiene JSON válido.
SELECT ISJSON('{"Name": "Bob"}') AS Result;
Resultado:
+----------+ | Result | |----------| | 1 | +----------+
Ejemplo 2:JSON no válido
Aquí hay un ejemplo para demostrar lo que sucede cuando la cadena no contener JSON válido.
SELECT ISJSON('Name: Bob') AS Result;
Resultado:
+----------+ | Result | |----------| | 0 | +----------+
Ejemplo 3:una declaración condicional
Aquí hay una declaración condicional básica que genera un resultado diferente, dependiendo de si la cadena contiene JSON o no.
DECLARE @data nvarchar(255); SET @data = '{"Name": "Bob"}'; IF (ISJSON(@data) > 0) SELECT 'Valid JSON' AS 'Result'; ELSE SELECT 'Invalid JSON' AS 'Result';
Resultado:
+------------+ | Result | |------------| | Valid JSON | +------------+
Ejemplo 4:un ejemplo de base de datos
En esta consulta de base de datos, los resultados solo se devuelven donde Collections.Contents
columna contiene JSON válido.
Esta columna en particular usa un tipo de datos de nvarchar(4000)
para almacenar el documento JSON.
SELECT Contents FROM Collections WHERE ISJSON(Contents) > 0;
Resultado:
+------------+ | Contents | |------------| | [ { "ArtistName": "AC/DC", "Albums": [ { "AlbumName": "Powerage" } ] }, { "ArtistName": "Devin Townsend", "Albums": [ { "AlbumName": "Ziltoid the Omniscient" }, { "AlbumName": "Casualties of Cool" }, { "AlbumName": "Epicloud" } ] }, { "ArtistName": "Iron Maiden", "Albums": [ { "AlbumName": "Powerslave" }, { "AlbumName": "Somewhere in Time" }, { "AlbumName": "Piece of Mind" }, { "AlbumName": "Killers" }, { "AlbumName": "No Prayer for the Dying" } ] } ] | +------------+