sql >> Base de Datos >  >> RDS >> Sqlserver

Ejemplos de ISJSON() en SQL Server (T-SQL)

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"
            }
        ]
    }
]            |
+------------+