sql >> Base de Datos >  >> RDS >> MariaDB

MariaDB JSON_COMPACT() explicado

En MariaDB, JSON_COMPACT() es una función integrada que elimina todos los espacios innecesarios de un documento JSON, para que sea lo más breve y compacto posible, y devuelve el resultado.

Esto puede ser útil cuando necesita almacenar datos JSON en una columna de base de datos y no desea que los documentos JSON utilicen más espacio del necesario.

Para el efecto contrario (es decir, embellecer un documento JSON agregando sangrías y distribuyéndolo en varias líneas), use JSON_DETAILED() función.

Sintaxis

La sintaxis es así:

JSON_COMPACT(json_doc)

Donde json_doc es el documento JSON.

Ejemplo

Aquí hay un ejemplo para demostrarlo.

SET @json_document = '{"a": [0, 1], "b": [2, 3]}';

SELECT 
    JSON_COMPACT(@json_document) AS Compact,
    @json_document AS Original;

Resultado:

+-----------------------+----------------------------+
| Compact               | Original                   |
+-----------------------+----------------------------+
| {"a":[0,1],"b":[2,3]} | {"a": [0, 1], "b": [2, 3]} |
+-----------------------+----------------------------+

En este caso, la primera columna contiene la versión compactada y la segunda columna contiene el documento JSON original antes de que se compactara.

Documento JSON más grande

Aquí hay un ejemplo con un documento JSON embellecido un poco más grande.

SET @json_document = '{ 
        "_id" : 1, 
        "name" : "Wag", 
        "details" : {
            "type" : "Dog", 
            "weight" : 20,
            "awards" : { 
                "Florida Dog Awards" : "Top Dog", 
                "New York Marathon" : "Fastest Dog", 
                "Sumo 2020" : "Biggest Dog"
            }
        }
    }';
SELECT JSON_COMPACT(@json_document);

Resultado:

{"_id":1,"name":"Wag","details":{"type":"Dog","weight":20,"awards":{"Florida Dog Awards":"Top Dog","New York Marathon":"Fastest Dog","Sumo 2020":"Biggest Dog"}}}

Argumentos nulos

Si el argumento es NULL , el resultado es NULL :

SELECT JSON_COMPACT(null);

Resultado:

+--------------------+
| JSON_COMPACT(null) |
+--------------------+
| NULL               |
+--------------------+

Recuento de parámetros incorrecto

No proporcionar argumentos da como resultado un error:

SELECT JSON_COMPACT();

Resultado:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_COMPACT'

Obtenemos el mismo resultado si proporcionamos demasiados argumentos:

SELECT JSON_COMPACT('{ "a": 1}', '{ "b": 1 }');

Resultado:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_COMPACT'