MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

MariaDB JSON_COMPACT() explicado


No MariaDB, JSON_COMPACT() é uma função interna que remove todos os espaços desnecessários de um documento JSON, para que seja o mais curto e compacto possível, e retorna o resultado.

Isso pode ser útil quando você precisa armazenar dados JSON em uma coluna de banco de dados e não deseja que os documentos JSON ocupem mais espaço do que o necessário.

Para o efeito oposto (ou seja, para embelezar um documento JSON adicionando recuos e espalhando-o por várias linhas), use o JSON_DETAILED() função.

Sintaxe


A sintaxe fica assim:
JSON_COMPACT(json_doc)

Onde json_doc é o documento JSON.

Exemplo


Aqui está um exemplo para demonstrar.
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]} |
+-----------------------+----------------------------+

Nesse caso, a primeira coluna contém a versão compactada e a segunda coluna contém o documento JSON original antes de ser compactado.

Documento JSON maior


Aqui está um exemplo com um documento JSON um pouco maior e embelezado.
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


Se o argumento for NULL , o resultado é NULL :
SELECT JSON_COMPACT(null);

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

Contagem de parâmetros incorreta


Não fornecer argumentos resulta em um erro:
SELECT JSON_COMPACT();

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

Obtemos o mesmo resultado se fornecermos muitos argumentos:
SELECT JSON_COMPACT('{ "a": 1}', '{ "b": 1 }');

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