Dans MySQL, le JSON_STORAGE_SIZE()
renvoie le nombre d'octets utilisés pour stocker la représentation binaire d'un document JSON.
Vous fournissez le document JSON comme argument.
Lorsque l'argument est un JSON
colonne, cette fonction renvoie l'espace utilisé pour stocker le document JSON tel qu'il a été inséré dans la colonne, avant toute mise à jour partielle qui aurait pu être effectuée par la suite.
Lorsque l'argument est une chaîne, la fonction renvoie la quantité d'espace de stockage dans la représentation binaire JSON qui est créée en analysant la chaîne en tant que JSON et en la convertissant en binaire.
Syntaxe
La syntaxe ressemble à ceci :
JSON_STORAGE_SIZE(json_val)
Où json_val
est le document JSON pour lequel renvoyer la taille de stockage. Il doit s'agir d'un document JSON valide ou d'une chaîne pouvant être analysée comme telle.
Exemple 1 - Utilisation de base
Voici un exemple pour illustrer.
SELECT JSON_STORAGE_SIZE('{"a": 1}') Result;
Résultat :
+--------+ | Result | +--------+ | 13 | +--------+
Dans ce cas, la taille du document est de 13 octets.
Voici un document JSON légèrement plus grand.
SELECT JSON_STORAGE_SIZE('{"a": 1, "b": 2, "c": 3}') Result;
Résultat :
+--------+ | Result | +--------+ | 29 | +--------+
Donc celui-ci fait 29 octets.
Et en voici encore une plus grande.
SET @data = '{ "Person": { "Age": 10, "Name": "Bart", "Friends": [ "Bart", "Milhouse" ] } }'; SELECT JSON_STORAGE_SIZE(@data) Result;
Résultat :
+--------+ | Result | +--------+ | 86 | +--------+
Exemple 2 – Colonnes de la base de données
Voici un exemple d'obtention de la taille de stockage d'un document JSON stocké dans une colonne de base de données.
USE Music; SELECT JSON_STORAGE_SIZE(Contents) Size FROM Collections WHERE CollectionId = 1;
Résultat :
+------+ | Size | +------+ | 503 | +------+
Dans ce cas, la colonne de la base de données était une colonne JSON et elle contient les données suivantes.
USE Music; SELECT JSON_PRETTY(Contents) Contents FROM Collections WHERE CollectionId = 1;
Résultat :
[ { "Albums": [ { "AlbumName": "Powerage" } ], "ArtistName": "AC/DC" }, { "Albums": [ { "AlbumName": "Ziltoid the Omniscient" }, { "AlbumName": "Casualties of Cool" }, { "AlbumName": "Epicloud" } ], "ArtistName": "Devin Townsend" }, { "Albums": [ { "AlbumName": "Powerslave" }, { "AlbumName": "Somewhere in Time" }, { "AlbumName": "Piece of Mind" }, { "AlbumName": "Killers" }, { "AlbumName": "No Prayer for the Dying" } ], "ArtistName": "Iron Maiden" } ]
Dans ce cas, j'ai utilisé le JSON_PRETTY()
fonction pour rendre les résultats plus lisibles.