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

MariaDB JSON_QUERY() erklärt

In MariaDB, JSON_QUERY() ist eine integrierte Funktion, die basierend auf dem bereitgestellten Pfad ein Objekt oder Array aus einem JSON-Dokument zurückgibt.

Es ähnelt dem JSON_VALUE() Funktion, außer dass sie ein Objekt oder Array anstelle eines Skalars zurückgibt (JSON_VALUE() gibt einen Skalar zurück).

Syntax

Die Syntax lautet wie folgt:

JSON_QUERY(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 = '
    { 
        "_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_QUERY(@json_document, '$.details'); 

Ergebnis:

{ "Typ" :"Hund", "Gewicht" :20, "Auszeichnungen" :{ "Florida Dog Awards" :"Top Dog", "New York Marathon" :"Schnellster Hund", "Sumo 2020" :"Größter Hund" }}

Wir können die Punktnotation verwenden, um zum nächsten verschachtelten Objekt zu gelangen:

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_QUERY(@json_document, '$.details.awards'); 

Ergebnis:

{ „Florida Dog Awards“ :„Platzhirsch“, „New York Marathon“ :„Schnellster Hund“, „Sumo 2020“ :„Größter Hund“}

Arrays

Hier ist ein Beispiel für die Rückgabe eines Arrays:

SET @json_document = '
    { 
        "_id" : 1, 
        "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] 
    }
';
SELECT JSON_QUERY(@json_document, '$.awards'); 

Ergebnis:

+--------------------------------------------------+| JSON_QUERY(@json_document, '$.awards') |+------------------------------------- -----+| [ "Platzhirsch", "Bester Hund", "Größter Hund" ] |+------------------------------- ----------+

Wenn Sie ein tatsächliches Array-Element zurückgeben möchten, versuchen Sie es mit JSON_VALUE() Funktion.

Nicht vorhandener Pfad

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

Beispiel:

SET @json_document = '
    { 
        "_id" : 1, 
        "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] 
    }
';
SELECT JSON_QUERY(@json_document, '$.type'); 

Ergebnis:

+--------------------------------------+| JSON_QUERY(@json_document, '$.type') |+------------------------------------- -+| NULL |+---------------------------------------------------+

Skalare Werte

Der Versuch, einen Skalarwert zurückzugeben, gibt NULL zurück .

Beispiel:

SELECT JSON_QUERY('{ "weight": 10 }', '$.weight'); 

Ergebnis:

+--------------------------------------------------+| JSON_QUERY('{ "Gewicht":10 }', '$.Gewicht') |+------------------------------ --------------+| NULL |+--------------------------------------------+ 

Um einen Skalarwert zurückzugeben, verwenden Sie JSON_VALUE() Funktion.

Null-Argumente

Wenn irgendein Argument NULL ist , ist das Ergebnis NULL :

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

Ergebnis:

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

Falsche Parameteranzahl

Wenn Sie keine Argumente angeben, wird ein Fehler ausgegeben:

SELECT JSON_QUERY(); 

Ergebnis:

FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion „JSON_QUERY“

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

SELECT JSON_QUERY('{ "a": 1}'); 

Ergebnis:

FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion „JSON_QUERY“