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

JSON_VALID() - Test de JSON valide dans MySQL

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

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

Syntaxe

La syntaxe ressemble à ceci :

JSON_VALID(val)

val est la valeur 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 JSON_VALID('{"Name": "Bart"}') 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 JSON_VALID('Name: Bart') AS Result;

Résultat :

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

Exemple 3 - 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 json pour stocker le document JSON.

SELECT Contents
FROM Collections
WHERE JSON_VALID(Contents) = 1;

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

Voici ce qui se passe si nous modifions l'instruction pour renvoyer les données uniquement si elles isn't JSON valide.

SELECT Contents
FROM Collections
WHERE JSON_VALID(Contents) = 0;

Résultat :

Empty set (0.00 sec)