В MySQL, JSON_STORAGE_SIZE() функцията връща броя байтове, използвани за съхраняване на двоичното представяне на JSON документ.
Предоставяте документа JSON като аргумент.
Когато аргументът е JSON колона, тази функция връща пространството, използвано за съхраняване на JSON документа, както е бил вмъкнат в колоната, преди всякакви частични актуализации, които може да са били извършени върху него след това.
Когато аргументът е низ, функцията връща количеството пространство за съхранение в двоичното представяне на JSON, което се създава чрез синтактичен анализ на низа като JSON и преобразуването му в двоично.
Синтаксис
Синтаксисът е така:
JSON_STORAGE_SIZE(json_val)
Където json_val е JSON документът, за който да се върне размерът за съхранение. Това трябва да е валиден JSON документ или низ, който може да бъде анализиран като един.
Пример 1 – Основна употреба
Ето пример за демонстрация.
SELECT JSON_STORAGE_SIZE('{"a": 1}') Result;
Резултат:
+--------+ | Result | +--------+ | 13 | +--------+
В този случай размерът на документа е 13 байта.
Ето малко по-голям JSON документ.
SELECT JSON_STORAGE_SIZE('{"a": 1, "b": 2, "c": 3}') Result;
Резултат:
+--------+ | Result | +--------+ | 29 | +--------+
Значи този е 29 байта.
И ето отново по-голям.
SET @data = '{
"Person": {
"Age": 10,
"Name": "Bart",
"Friends": [
"Bart",
"Milhouse"
]
}
}';
SELECT JSON_STORAGE_SIZE(@data) Result;
Резултат:
+--------+ | Result | +--------+ | 86 | +--------+
Пример 2 – Колони на базата данни
Ето пример за получаване на размера на съхранение на JSON документ, който се съхранява в колона на база данни.
USE Music; SELECT JSON_STORAGE_SIZE(Contents) Size FROM Collections WHERE CollectionId = 1;
Резултат:
+------+ | Size | +------+ | 503 | +------+
В този случай колоната на базата данни е колона JSON и съдържа следните данни.
USE Music; SELECT JSON_PRETTY(Contents) Contents FROM Collections WHERE CollectionId = 1;
Резултат:
[
{
"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"
}
]
В този случай използвах JSON_PRETTY() функция, за да направи резултатите по-четливи.