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)
Où 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)