In MySQL is de JSON_STORAGE_SIZE()
functie retourneert het aantal bytes dat is gebruikt om de binaire representatie van een JSON-document op te slaan.
U geeft het JSON-document op als argument.
Als het argument een JSON
. is kolom, retourneert deze functie de ruimte die is gebruikt om het JSON-document op te slaan zoals het in de kolom was ingevoegd, voorafgaand aan eventuele gedeeltelijke updates die er daarna op zijn uitgevoerd.
Als het argument een string is, retourneert de functie de hoeveelheid opslagruimte in de binaire JSON-representatie die is gemaakt door de string te ontleden als JSON en deze naar binair te converteren.
Syntaxis
De syntaxis gaat als volgt:
JSON_STORAGE_SIZE(json_val)
Waar json_val
is het JSON-document waarvoor de opslaggrootte moet worden geretourneerd. Dit moet een geldig JSON-document zijn of een tekenreeks die als één document kan worden geparseerd.
Voorbeeld 1 – Basisgebruik
Hier is een voorbeeld om te demonstreren.
SELECT JSON_STORAGE_SIZE('{"a": 1}') Result;
Resultaat:
+--------+ | Result | +--------+ | 13 | +--------+
In dit geval is de documentgrootte 13 bytes.
Hier is een iets groter JSON-document.
SELECT JSON_STORAGE_SIZE('{"a": 1, "b": 2, "c": 3}') Result;
Resultaat:
+--------+ | Result | +--------+ | 29 | +--------+
Deze is dus 29 bytes.
En hier is weer een grotere.
SET @data = '{ "Person": { "Age": 10, "Name": "Bart", "Friends": [ "Bart", "Milhouse" ] } }'; SELECT JSON_STORAGE_SIZE(@data) Result;
Resultaat:
+--------+ | Result | +--------+ | 86 | +--------+
Voorbeeld 2 – Databasekolommen
Hier is een voorbeeld van het verkrijgen van de opslaggrootte van een JSON-document dat is opgeslagen in een databasekolom.
USE Music; SELECT JSON_STORAGE_SIZE(Contents) Size FROM Collections WHERE CollectionId = 1;
Resultaat:
+------+ | Size | +------+ | 503 | +------+
In dit geval was de databasekolom een JSON-kolom en bevat deze de volgende gegevens.
USE Music; SELECT JSON_PRETTY(Contents) Contents FROM Collections WHERE CollectionId = 1;
Resultaat:
[ { "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" } ]
In dit geval gebruikte ik de JSON_PRETTY()
functie om de resultaten leesbaarder te maken.