I MySQL, JSON_STORAGE_SIZE() funktion returnerar antalet byte som används för att lagra den binära representationen av ett JSON-dokument.
Du tillhandahåller JSON-dokumentet som ett argument.
När argumentet är en JSON kolumnen returnerar den här funktionen utrymmet som används för att lagra JSON-dokumentet när det infogades i kolumnen, före eventuella partiella uppdateringar som kan ha utförts på det efteråt.
När argumentet är en sträng returnerar funktionen mängden lagringsutrymme i den binära JSON-representationen som skapas genom att tolka strängen som JSON och konvertera den till binär.
Syntax
Syntaxen ser ut så här:
JSON_STORAGE_SIZE(json_val)
Där json_val är JSON-dokumentet som lagringsstorleken ska returneras för. Detta måste vara ett giltigt JSON-dokument eller en sträng som kan tolkas som ett.
Exempel 1 – Grundläggande användning
Här är ett exempel att visa.
SELECT JSON_STORAGE_SIZE('{"a": 1}') Result;
Resultat:
+--------+ | Result | +--------+ | 13 | +--------+
I det här fallet är dokumentstorleken 13 byte.
Här är ett lite större JSON-dokument.
SELECT JSON_STORAGE_SIZE('{"a": 1, "b": 2, "c": 3}') Result;
Resultat:
+--------+ | Result | +--------+ | 29 | +--------+
Så den här är 29 byte.
Och här är en större igen.
SET @data = '{
"Person": {
"Age": 10,
"Name": "Bart",
"Friends": [
"Bart",
"Milhouse"
]
}
}';
SELECT JSON_STORAGE_SIZE(@data) Result;
Resultat:
+--------+ | Result | +--------+ | 86 | +--------+
Exempel 2 – Databaskolumner
Här är ett exempel på hur du får lagringsstorleken för ett JSON-dokument som lagras i en databaskolumn.
USE Music; SELECT JSON_STORAGE_SIZE(Contents) Size FROM Collections WHERE CollectionId = 1;
Resultat:
+------+ | Size | +------+ | 503 | +------+
I det här fallet var databaskolumnen en JSON-kolumn och den innehåller följande 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 det här fallet använde jag JSON_PRETTY() funktion för att göra resultaten mer läsbara.