Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Esempi ISJSON() in SQL Server (T-SQL)

Quando si utilizza SQL Server, è possibile utilizzare ISJSON() funzione per verificare se un'espressione stringa contiene o meno un JSON valido.

Se l'espressione contiene JSON valido, ISJSON() restituisce 1 , altrimenti restituisce 0 .

Sintassi

La sintassi è questa:

ISJSON ( expression )

Dove expression è l'espressione stringa per la quale stai testando un JSON valido.

Esempio 1:JSON valido

Ecco un esempio per dimostrare cosa succede quando la stringa contiene un codice JSON valido.

SELECT ISJSON('{"Name": "Bob"}') AS Result;

Risultato:

+----------+
| Result   |
|----------|
| 1        |
+----------+

Esempio 2:JSON non valido

Ecco un esempio per dimostrare cosa succede quando la stringa non contengono JSON valido.

SELECT ISJSON('Name: Bob') AS Result;

Risultato:

+----------+
| Result   |
|----------|
| 0        |
+----------+

Esempio 3 – Una dichiarazione condizionale

Ecco un'istruzione condizionale di base che restituisce un risultato diverso, a seconda che la stringa contenga o meno JSON.

DECLARE @data nvarchar(255);
SET @data = '{"Name": "Bob"}';
IF (ISJSON(@data) > 0)
    SELECT 'Valid JSON' AS 'Result';
ELSE
    SELECT 'Invalid JSON' AS 'Result';

Risultato:

+------------+
| Result     |
|------------|
| Valid JSON |
+------------+

Esempio 4:un esempio di database

In questa query del database, i risultati vengono restituiti solo dove Collections.Contents la colonna contiene JSON valido.

Questa particolare colonna utilizza un tipo di dati di nvarchar(4000) per memorizzare il documento JSON.

SELECT Contents
FROM Collections
WHERE ISJSON(Contents) > 0;

Risultato:

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