MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

MariaDB JSON_KEYS() erklärt

In MariaDB, JSON_KEYS() ist eine integrierte Funktion, die ein Array der Schlüssel der obersten Ebene aus einem JSON-Dokument zurückgibt. Wenn ein Pfad angegeben wird, werden die Schlüssel der obersten Ebene von diesem Pfad zurückgegeben.

Es schließt Schlüssel von verschachtelten Unterobjekten in der angegebenen Ebene aus.

Auch wenn das ausgewählte Objekt leer ist, wird ein leeres Array zurückgegeben.

Syntax

Die Syntax sieht so aus:

JSON_KEYS(json_doc[, path])

Wobei json_doc ist das JSON-Dokument und path ist ein Pfad innerhalb des Dokuments.

Beispiel

Hier ist ein Beispiel zur Veranschaulichung.

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

Ergebnis:

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

Pfad angeben

Hier ist ein Beispiel für die Angabe eines Pfads innerhalb des Dokuments:

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;

Ergebnis:

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

Wie bereits erwähnt, werden Unterobjekte vom Ergebnis ausgeschlossen.

Nicht vorhandene Pfade

Das Übergeben eines Pfads, der im JSON-Dokument nicht vorhanden ist, führt zu NULL .

Beispiel:

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;

Ergebnis:

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

Leere Objekte

Wenn das ausgewählte Objekt leer ist, wird ein leeres Array zurückgegeben:

SELECT JSON_KEYS('{}');

Ergebnis:

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

Null-Argumente

Wenn irgendein Argument NULL ist , ist das Ergebnis NULL :

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

Ergebnis:

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

Falsche Parameteranzahl

Wenn Sie keine Argumente angeben, wird ein Fehler ausgegeben:

SELECT JSON_KEYS();

Ergebnis:

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

Das Gleiche gilt, wenn Sie zu wenige oder zu viele Argumente angeben:

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

Ergebnis:

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