In MySQL, il JSON_STORAGE_SIZE() La funzione restituisce il numero di byte utilizzati per memorizzare la rappresentazione binaria di un documento JSON.
Fornisci il documento JSON come argomento.
Quando l'argomento è un JSON colonna, questa funzione restituisce lo spazio utilizzato per memorizzare il documento JSON così come è stato inserito nella colonna, prima di eventuali aggiornamenti parziali che potrebbero essere stati eseguiti su di esso in seguito.
Quando l'argomento è una stringa, la funzione restituisce la quantità di spazio di archiviazione nella rappresentazione binaria JSON creata analizzando la stringa come JSON e convertendola in binario.
Sintassi
La sintassi è questa:
JSON_STORAGE_SIZE(json_val)
Dove json_val è il documento JSON per il quale restituire la dimensione di archiviazione. Deve essere un documento JSON valido o una stringa che può essere analizzata come tale.
Esempio 1 – Utilizzo di base
Ecco un esempio da dimostrare.
SELECT JSON_STORAGE_SIZE('{"a": 1}') Result;
Risultato:
+--------+ | Result | +--------+ | 13 | +--------+
In questo caso, la dimensione del documento è di 13 byte.
Ecco un documento JSON leggermente più grande.
SELECT JSON_STORAGE_SIZE('{"a": 1, "b": 2, "c": 3}') Result;
Risultato:
+--------+ | Result | +--------+ | 29 | +--------+
Quindi questo è 29 byte.
Ed eccone di nuovo uno più grande.
SET @data = '{
"Person": {
"Age": 10,
"Name": "Bart",
"Friends": [
"Bart",
"Milhouse"
]
}
}';
SELECT JSON_STORAGE_SIZE(@data) Result;
Risultato:
+--------+ | Result | +--------+ | 86 | +--------+
Esempio 2 – Colonne del database
Ecco un esempio di come ottenere la dimensione di archiviazione di un documento JSON archiviato in una colonna del database.
USE Music; SELECT JSON_STORAGE_SIZE(Contents) Size FROM Collections WHERE CollectionId = 1;
Risultato:
+------+ | Size | +------+ | 503 | +------+
In questo caso, la colonna del database era una colonna JSON e contiene i seguenti dati.
USE Music; SELECT JSON_PRETTY(Contents) Contents FROM Collections WHERE CollectionId = 1;
Risultato:
[
{
"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 questo caso, ho usato JSON_PRETTY() funzione per rendere i risultati più leggibili.