MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

MariaDB JSON_COMPACT() expliqué

Dans MariaDB, JSON_COMPACT() est une fonction intégrée qui supprime tous les espaces inutiles d'un document JSON, afin qu'il soit aussi court et compact que possible, et renvoie le résultat.

Cela peut être pratique lorsque vous devez stocker des données JSON dans une colonne de base de données et que vous ne voulez pas que les documents JSON utilisent plus d'espace que nécessaire.

Pour l'effet inverse (c'est-à-dire pour embellir un document JSON en ajoutant des retraits et en le répartissant sur plusieurs lignes), utilisez le JSON_DETAILED() fonction.

Syntaxe

La syntaxe ressemble à ceci :

JSON_COMPACT(json_doc)

json_doc est le document JSON.

Exemple

Voici un exemple pour illustrer.

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

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

Résultat :

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

Dans ce cas, la première colonne contient la version compactée et la deuxième colonne contient le document JSON d'origine avant qu'il ne soit compacté.

Document JSON plus grand

Voici un exemple avec un document JSON légèrement plus grand et embelli.

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

Résultat :

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

Arguments nuls

Si l'argument est NULL , le résultat est NULL :

SELECT JSON_COMPACT(null);

Résultat :

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

Nombre de paramètres incorrect

Ne fournir aucun argument génère une erreur :

SELECT JSON_COMPACT();

Résultat :

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

Nous obtenons le même résultat si nous fournissons trop d'arguments :

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

Résultat :

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