No MySQL, o
JSON_STORAGE_SIZE() A função retorna o número de bytes usados para armazenar a representação binária de um documento JSON. Você fornece o documento JSON como um argumento.
Quando o argumento é um
JSON column, essa função retorna o espaço usado para armazenar o documento JSON conforme foi inserido na coluna, antes de qualquer atualização parcial que possa ter sido realizada posteriormente. Quando o argumento é uma string, a função retorna a quantidade de espaço de armazenamento na representação binária JSON que é criada analisando a string como JSON e convertendo-a em binário.
Sintaxe
A sintaxe fica assim:
JSON_STORAGE_SIZE(json_val)
Onde
json_val é o documento JSON para o qual retornar o tamanho do armazenamento. Este deve ser um documento JSON válido ou uma string que possa ser analisada como uma. Exemplo 1 – Uso básico
Aqui está um exemplo para demonstrar.
SELECT JSON_STORAGE_SIZE('{"a": 1}') Result;
Resultado:
+--------+ | Result | +--------+ | 13 | +--------+
Nesse caso, o tamanho do documento é de 13 bytes.
Aqui está um documento JSON um pouco maior.
SELECT JSON_STORAGE_SIZE('{"a": 1, "b": 2, "c": 3}') Result;
Resultado:
+--------+ | Result | +--------+ | 29 | +--------+
Então este é de 29 bytes.
E aqui está um maior novamente.
SET @data = '{
"Person": {
"Age": 10,
"Name": "Bart",
"Friends": [
"Bart",
"Milhouse"
]
}
}';
SELECT JSON_STORAGE_SIZE(@data) Result;
Resultado:
+--------+ | Result | +--------+ | 86 | +--------+
Exemplo 2 – Colunas do banco de dados
Aqui está um exemplo de como obter o tamanho de armazenamento de um documento JSON armazenado em uma coluna de banco de dados.
USE Music; SELECT JSON_STORAGE_SIZE(Contents) Size FROM Collections WHERE CollectionId = 1;
Resultado:
+------+ | Size | +------+ | 503 | +------+
Nesse caso, a coluna do banco de dados era uma coluna JSON e contém os dados a seguir.
USE Music; SELECT JSON_PRETTY(Contents) Contents FROM Collections WHERE CollectionId = 1;
Resultado:
[
{
"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"
}
] Neste caso, usei o
JSON_PRETTY() função para tornar os resultados mais legíveis.