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

MariaDB JSON_LENGTH() erklärt

In MariaDB JSON_LENGTH() ist eine integrierte Funktion, die die Länge eines JSON-Dokuments zurückgibt.

Wenn Sie diese Funktion aufrufen, geben Sie das JSON-Dokument als Argument an. Sie können auch ein Pfadargument angeben, um die Länge eines Werts innerhalb des Dokuments zurückzugeben.

Die Länge wird wie folgt bestimmt:

  • Die Länge eines Skalars ist immer 1.
  • Bei einem Array die Anzahl der Elemente im Array.
  • Bei einem Objekt die Anzahl der Mitglieder im Objekt.

Die Länge von verschachtelten Arrays oder Objekten wird nicht gezählt.

Syntax

Die Syntax sieht so aus:

JSON_LENGTH(json_doc[, path]) 

Wobei json_doc ist das JSON-Dokument und path ist ein optionales Argument, das einen Pfad innerhalb des Dokuments angibt.

Beispiel

Hier ist ein Beispiel zur Veranschaulichung.

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

Ergebnis:

+-------------------------------------+| JSON_LENGTH(@json_document) |+--------------------------------------+| 3 |+-------------------------------------+

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",
            "awards" : { 
                "Florida Dog Awards" : "Top Dog", 
                "New York Marathon" : "Fastest Dog", 
                "Sumo 2020" : "Biggest Dog"
            }
        }
    }
';
SELECT JSON_LENGTH(@json_document, '$.details'); 

Ergebnis:

+--------------------------------------------------+| JSON_LENGTH(@json_document, '$.details') |+------------------------------------- -----+| 2 |+--------------------------------------------------+

Wie bereits erwähnt, wird die Länge von verschachtelten Objekten nicht gezählt, sodass wir als Ergebnis 2 erhalten .

Das nächste Beispiel geht eine Ebene tiefer und zählt die Länge der awards Objekt:

SET @json_document = '
    { 
        "_id" : 1, 
        "name" : "Wag", 
        "details" : {
            "type" : "Dog",
            "awards" : { 
                "Florida Dog Awards" : "Top Dog", 
                "New York Marathon" : "Fastest Dog", 
                "Sumo 2020" : "Biggest Dog"
            }
        }
    }
';
SELECT JSON_LENGTH(@json_document, '$.details.awards'); 

Ergebnis:

+---------------------------------------------- ---+| JSON_LENGTH(@json_document, '$.details.awards') |+----------------------------------- --------------+| 3 |+------------------------------------------------------------ --+

Skalare

Die Länge eines Skalars ist immer 1 :

SELECT JSON_LENGTH( 
    '{ "a" : 378, "b" : 45 }', 
    '$.a' 
    ) AS Result; 

Ergebnis:

+--------+| Ergebnis |+--------+| 1 |+--------+

Arrays

Wenn das Dokument ein Array ist, JSON_LENGTH() zählt die Anzahl der Elemente im Array:

SET @json_document = '
    { 
        "name": "Wag", 
        "type": "Dog", 
        "scores": [9, 7, 8, 10, 3] 
    }
';
SELECT JSON_LENGTH(@json_document, '$.scores'); 

Ergebnis:

+------------------------------------+| JSON_LENGTH(@json_document, '$.scores') |+------------------------------------- ----+| 5 |+------------------------------------+

Nicht vorhandene Pfade

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

Beispiel:

SET @json_document = '
    { 
        "name": "Wag", 
        "type": "Dog"
    }
';
SELECT JSON_LENGTH(@json_document, '$.oops'); 

Ergebnis:

+--------------------------+| JSON_LENGTH(@json_document, '$.oops') |+------------------------------------- --+| NULL |+---------------------------------------------------+

Leere Objekte

Wenn das ausgewählte Objekt leer ist, ist das Ergebnis 0 :

SELECT JSON_LENGTH('{}'); 

Ergebnis:

+-------------------+| JSON_LENGTH('{}') |+------------------------------+| 0 |+------------------------------+

Null-Argumente

Wenn irgendein Argument NULL ist , ist das Ergebnis NULL :

SELECT 
    JSON_LENGTH(null) AS a,
    JSON_LENGTH(null, '$.type') AS b,
    JSON_LENGTH('{"a":1}', null) AS c; 

Ergebnis:

+------+------+------+| ein | b | c |+------+------+------+| NULL | NULL | NULL |+------+------+------+

Falsche Parameteranzahl

Wenn Sie keine Argumente angeben, wird ein Fehler ausgegeben:

SELECT JSON_LENGTH(); 

Ergebnis:

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