I MySQL er JSON_STORAGE_SIZE() funktion returnerer antallet af bytes, der bruges til at gemme den binære repræsentation af et JSON-dokument.
Du angiver JSON-dokumentet som et argument.
Når argumentet er en JSON kolonne, returnerer denne funktion den plads, der blev brugt til at gemme JSON-dokumentet, som det blev indsat i kolonnen, før eventuelle delvise opdateringer, der måtte være blevet udført på det efterfølgende.
Når argumentet er en streng, returnerer funktionen mængden af lagerplads i den binære JSON-repræsentation, der oprettes ved at parse strengen som JSON og konvertere den til binær.
Syntaks
Syntaksen ser sådan ud:
JSON_STORAGE_SIZE(json_val)
Hvor json_val er det JSON-dokument, som lagerstørrelsen skal returneres for. Dette skal være et gyldigt JSON-dokument eller en streng, der kan parses som én.
Eksempel 1 – Grundlæggende brug
Her er et eksempel til at demonstrere.
SELECT JSON_STORAGE_SIZE('{"a": 1}') Result;
Resultat:
+--------+ | Result | +--------+ | 13 | +--------+
I dette tilfælde er dokumentstørrelsen 13 bytes.
Her er et lidt større JSON-dokument.
SELECT JSON_STORAGE_SIZE('{"a": 1, "b": 2, "c": 3}') Result;
Resultat:
+--------+ | Result | +--------+ | 29 | +--------+
Så denne er 29 bytes.
Og her er en større igen.
SET @data = '{
"Person": {
"Age": 10,
"Name": "Bart",
"Friends": [
"Bart",
"Milhouse"
]
}
}';
SELECT JSON_STORAGE_SIZE(@data) Result;
Resultat:
+--------+ | Result | +--------+ | 86 | +--------+
Eksempel 2 – Databasekolonner
Her er et eksempel på at få lagerstørrelsen for et JSON-dokument, der er gemt i en databasekolonne.
USE Music; SELECT JSON_STORAGE_SIZE(Contents) Size FROM Collections WHERE CollectionId = 1;
Resultat:
+------+ | Size | +------+ | 503 | +------+
I dette tilfælde var databasekolonnen en JSON-kolonne, og den indeholder følgende data.
USE Music; SELECT JSON_PRETTY(Contents) Contents FROM Collections WHERE CollectionId = 1;
Resultat:
[
{
"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"
}
]
I dette tilfælde brugte jeg JSON_PRETTY() funktion for at gøre resultaterne mere læsbare.