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

MariaDB JSON_VALUE() erklärt

In MariaDB, JSON_VALUE() ist eine integrierte Funktion, die einen Skalarwert aus einem JSON-Dokument zurückgibt. Genauer gesagt gibt es den Skalar zurück, der durch den bereitgestellten Pfad angegeben ist.

Syntax

Die Syntax lautet wie folgt:

JSON_VALUE(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_VALUE(@json_document, '$.name'); 

Ergebnis:

+--------------------------------------+| JSON_VALUE(@json_document, '$.name') |+------------------------------------- -+| Wag |+--------------------------------------+

Nicht vorhandener Pfad

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

Beispiel:

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

Ergebnis:

+--------------------------+| JSON_VALUE(@json_document, '$.color') |+------------------------------------- --+| NULL |+---------------------------------------------------+

Arrays

Hier ist ein Beispiel für die Rückgabe von Daten aus einem Array:

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

Ergebnis:

+--------------------------------------------------+| JSON_VALUE(@json_document, '$.awards[1]') |+---------------------------------------------- ---------+| Bester Hund |+---------------------------------------------------+ 

Arrays sind nullbasiert, also $.awards[1] extrahiert das zweite Element der awards Array.

Verschachtelte Objekte

Hier ist ein Beispiel für das Abrufen eines Werts von einem Objekt, das in einem anderen Objekt verschachtelt ist:

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_VALUE(
    @json_document, 
    '$.details.awards.Florida Dog Awards'
    ) AS Result; 

Ergebnis:

+---------+| Ergebnis |+---------+| Platzhirsch |+---------+

Nichtskalare Werte

Der Versuch, einen nicht skalaren Wert (z. B. ein Objekt oder ein Array) zurückzugeben, gibt NULL zurück .

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

Ergebnis:

+--------+| Ergebnis |+--------+| NULL |+--------+

Um einen nicht skalaren Wert zurückzugeben, verwenden Sie JSON_QUERY() Funktion oder die JSON_EXTRACT() Funktion.

Null-Argumente

Wenn irgendein Argument NULL ist , ist das Ergebnis NULL :

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

Ergebnis:

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

Falsche Parameteranzahl

Wenn Sie keine Argumente angeben, wird ein Fehler ausgegeben:

SELECT JSON_VALUE(); 

Ergebnis:

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

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

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

Ergebnis:

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