MariaDB
 sql >> Database >  >> RDS >> MariaDB

Spiegazione di MariaDB JSON_COMPACT()

In MariaDB, JSON_COMPACT() è una funzione incorporata che rimuove tutti gli spazi non necessari da un documento JSON, in modo che sia il più breve e compatto possibile, e restituisce il risultato.

Questo può essere utile quando è necessario archiviare dati JSON in una colonna del database e non si desidera che i documenti JSON utilizzino più spazio del necessario.

Per l'effetto opposto (ovvero per abbellire un documento JSON aggiungendo rientri e distribuendolo su più righe), usa JSON_DETAILED() funzione.

Sintassi

La sintassi è questa:

JSON_COMPACT(json_doc)

Dove json_doc è il documento JSON.

Esempio

Ecco un esempio da dimostrare.

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

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

Risultato:

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

In questo caso, la prima colonna contiene la versione compattata e la seconda colonna contiene il documento JSON originale prima che fosse compattato.

Documento JSON più grande

Ecco un esempio con un documento JSON leggermente più grande e grazioso.

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);

Risultato:

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

Argomenti nulli

Se l'argomento è NULL , il risultato è NULL :

SELECT JSON_COMPACT(null);

Risultato:

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

Conteggio parametri errato

Non fornire argomenti genera un errore:

SELECT JSON_COMPACT();

Risultato:

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

Otteniamo lo stesso risultato se forniamo troppi argomenti:

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

Risultato:

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