Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

ISJSON() Exemples dans SQL Server (T-SQL)

Lorsque vous utilisez SQL Server, vous pouvez utiliser le ISJSON() pour tester si une expression de chaîne contient ou non du JSON valide.

Si l'expression contient du JSON valide, ISJSON() renvoie 1 , sinon il renvoie 0 .

Syntaxe

La syntaxe ressemble à ceci :

ISJSON ( expression )

expression est l'expression de chaîne pour laquelle vous testez un JSON valide.

Exemple 1 – JSON valide

Voici un exemple pour montrer ce qui se passe lorsque la chaîne contient du JSON valide.

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

Résultat :

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

Exemple 2 – JSON non valide

Voici un exemple pour montrer ce qui se passe lorsque la chaîne ne le fait pas contenir un JSON valide.

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

Résultat :

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

Exemple 3 - Une instruction conditionnelle

Voici une instruction conditionnelle de base qui produit un résultat différent, selon que la chaîne contient JSON ou non.

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

Résultat :

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

Exemple 4 - Un exemple de base de données

Dans cette requête de base de données, les résultats ne sont renvoyés que lorsque le Collections.Contents la colonne contient un JSON valide.

Cette colonne particulière utilise un type de données de nvarchar(4000) pour stocker le document JSON.

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

Résultat :

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