W MySQL JSON_STORAGE_SIZE()
funkcja zwraca liczbę bajtów używanych do przechowywania binarnej reprezentacji dokumentu JSON.
Podajesz dokument JSON jako argument.
Gdy argumentem jest JSON
kolumna, ta funkcja zwraca miejsce używane do przechowywania dokumentu JSON, tak jak został on wstawiony do kolumny, przed wszelkimi częściowymi aktualizacjami, które mogły zostać na nim wykonane później.
Gdy argumentem jest ciąg, funkcja zwraca ilość miejsca do przechowywania w binarnej reprezentacji JSON utworzonej przez przeanalizowanie ciągu jako JSON i przekonwertowanie go na binarny.
Składnia
Składnia wygląda tak:
JSON_STORAGE_SIZE(json_val)
Gdzie json_val
to dokument JSON, dla którego należy zwrócić rozmiar pamięci. Musi to być prawidłowy dokument JSON lub ciąg, który można przeanalizować jako jeden.
Przykład 1 – Podstawowe użycie
Oto przykład do zademonstrowania.
SELECT JSON_STORAGE_SIZE('{"a": 1}') Result;
Wynik:
+--------+ | Result | +--------+ | 13 | +--------+
W tym przypadku rozmiar dokumentu wynosi 13 bajtów.
Oto nieco większy dokument JSON.
SELECT JSON_STORAGE_SIZE('{"a": 1, "b": 2, "c": 3}') Result;
Wynik:
+--------+ | Result | +--------+ | 29 | +--------+
Więc ten ma 29 bajtów.
A oto znowu większy.
SET @data = '{ "Person": { "Age": 10, "Name": "Bart", "Friends": [ "Bart", "Milhouse" ] } }'; SELECT JSON_STORAGE_SIZE(@data) Result;
Wynik:
+--------+ | Result | +--------+ | 86 | +--------+
Przykład 2 – Kolumny bazy danych
Oto przykład pobierania rozmiaru pamięci dokumentu JSON, który jest przechowywany w kolumnie bazy danych.
USE Music; SELECT JSON_STORAGE_SIZE(Contents) Size FROM Collections WHERE CollectionId = 1;
Wynik:
+------+ | Size | +------+ | 503 | +------+
W tym przypadku kolumna bazy danych była kolumną JSON i zawiera następujące dane.
USE Music; SELECT JSON_PRETTY(Contents) Contents FROM Collections WHERE CollectionId = 1;
Wynik:
[ { "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" } ]
W tym przypadku użyłem JSON_PRETTY()
funkcja, aby wyniki były bardziej czytelne.