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

Spiegazione di MariaDB JSON_KEYS()

In MariaDB, JSON_KEYS() è una funzione incorporata che restituisce un array di chiavi di primo livello da un documento JSON. Se viene fornito un percorso, restituisce le chiavi di primo livello da quel percorso.

Esclude le chiavi dagli oggetti secondari nidificati nel livello specificato.

Inoltre, se l'oggetto selezionato è vuoto, viene restituito un array vuoto.

Sintassi

La sintassi è questa:

JSON_KEYS(json_doc[, path])

Dove json_doc è il documento JSON e path è un percorso all'interno del documento.

Esempio

Ecco un esempio da dimostrare.

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

Risultato:

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

Specifica di un percorso

Ecco un esempio di specifica di un percorso all'interno del documento:

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;

Risultato:

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

Come accennato, i sottooggetti sono esclusi dal risultato.

Percorsi inesistenti

Il passaggio di un percorso che non esiste nel documento JSON restituisce NULL .

Esempio:

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;

Risultato:

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

Oggetti vuoti

Se l'oggetto selezionato è vuoto, viene restituito un array vuoto:

SELECT JSON_KEYS('{}');

Risultato:

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

Argomenti nulli

Se un argomento è NULL , il risultato è NULL :

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

Risultato:

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

Conteggio parametri errato

Non fornire argomenti genera un errore:

SELECT JSON_KEYS();

Risultato:

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

È lo stesso quando fornisci troppi pochi o troppi argomenti:

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

Risultato:

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