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

MariaDB JSON_KEYS() expliqué

Dans MariaDB, JSON_KEYS() est une fonction intégrée qui renvoie un tableau des clés de niveau supérieur d'un document JSON. Si un chemin est fourni, il renvoie les clés de niveau supérieur de ce chemin.

Il exclut les clés des sous-objets imbriqués dans le niveau spécifié.

De plus, si l'objet sélectionné est vide, un tableau vide est renvoyé.

Syntaxe

La syntaxe ressemble à ceci :

JSON_KEYS(json_doc[, path])

json_doc est le document JSON, et path est un chemin dans le document.

Exemple

Voici un exemple pour illustrer.

SET @json_document = '
    { 
        "name": "Wag", 
        "type": "Dog", 
        "weight": 20 
    }
';
SELECT JSON_KEYS(@json_document);

Résultat :

+----------------------------+
| JSON_KEYS(@json_document)  |
+----------------------------+
| ["name", "type", "weight"] |
+----------------------------+

Spécifier un chemin

Voici un exemple de spécification d'un chemin dans le document :

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_KEYS(
    @json_document, 
    '$.details'
    ) AS Result;

Résultat :

+------------------------------+
| Result                       |
+------------------------------+
| ["type", "weight", "awards"] |
+------------------------------+

Comme mentionné, les sous-objets sont exclus du résultat.

Chemins inexistants

Passer un chemin qui n'existe pas dans le document JSON donne NULL .

Exemple :

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_KEYS(
    @json_document, 
    '$.wrong'
    ) AS Result;

Résultat :

+--------+
| Result |
+--------+
| NULL   |
+--------+

Objets vides

Si l'objet sélectionné est vide, un tableau vide est renvoyé :

SELECT JSON_KEYS('{}');

Résultat :

+-----------------+
| JSON_KEYS('{}') |
+-----------------+
| []              |
+-----------------+

Arguments nuls

Si un argument est NULL , le résultat est NULL :

SELECT 
    JSON_KEYS(null),
    JSON_KEYS(null, '$.type'),
    JSON_KEYS('{"a":1}', null);

Résultat :

+-----------------+---------------------------+----------------------------+
| JSON_KEYS(null) | JSON_KEYS(null, '$.type') | JSON_KEYS('{"a":1}', null) |
+-----------------+---------------------------+----------------------------+
| NULL            | NULL                      | NULL                       |
+-----------------+---------------------------+----------------------------+

Nombre de paramètres incorrect

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

SELECT JSON_KEYS();

Résultat :

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

Il en va de même lorsque vous fournissez trop ou trop peu d'arguments :

SELECT JSON_KEYS('{ "a": 1}', 1, 2);

Résultat :

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