En MySQL, el JSON_STORAGE_SIZE()
La función devuelve el número de bytes utilizados para almacenar la representación binaria de un documento JSON.
Proporcionas el documento JSON como argumento.
Cuando el argumento es JSON
columna, esta función devuelve el espacio utilizado para almacenar el documento JSON tal como se insertó en la columna, antes de cualquier actualización parcial que se haya realizado posteriormente.
Cuando el argumento es una cadena, la función devuelve la cantidad de espacio de almacenamiento en la representación binaria JSON que se crea analizando la cadena como JSON y convirtiéndola en binaria.
Sintaxis
La sintaxis es así:
JSON_STORAGE_SIZE(json_val)
Donde json_val
es el documento JSON para el que se devolverá el tamaño de almacenamiento. Debe ser un documento JSON válido o una cadena que se pueda analizar como tal.
Ejemplo 1:uso básico
Aquí hay un ejemplo para demostrarlo.
SELECT JSON_STORAGE_SIZE('{"a": 1}') Result;
Resultado:
+--------+ | Result | +--------+ | 13 | +--------+
En este caso, el tamaño del documento es de 13 bytes.
Aquí hay un documento JSON un poco más grande.
SELECT JSON_STORAGE_SIZE('{"a": 1, "b": 2, "c": 3}') Result;
Resultado:
+--------+ | Result | +--------+ | 29 | +--------+
Así que este tiene 29 bytes.
Y aquí hay uno más grande otra vez.
SET @data = '{ "Person": { "Age": 10, "Name": "Bart", "Friends": [ "Bart", "Milhouse" ] } }'; SELECT JSON_STORAGE_SIZE(@data) Result;
Resultado:
+--------+ | Result | +--------+ | 86 | +--------+
Ejemplo 2:columnas de la base de datos
Este es un ejemplo de cómo obtener el tamaño de almacenamiento de un documento JSON que está almacenado en una columna de base de datos.
USE Music; SELECT JSON_STORAGE_SIZE(Contents) Size FROM Collections WHERE CollectionId = 1;
Resultado:
+------+ | Size | +------+ | 503 | +------+
En este caso, la columna de la base de datos era una columna JSON y contiene los siguientes datos.
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" } ]
En este caso, utilicé JSON_PRETTY()
para que los resultados sean más legibles.