Mysql
 sql >> Datenbank >  >> RDS >> Mysql

JSON_LENGTH() – Gibt die Länge eines JSON-Dokuments in MySQL zurück

In MySQL der JSON_LENGTH() Funktion gibt die Länge eines JSON-Dokuments zurück.

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.

Syntax

Die Syntax sieht so aus:

JSON_LENGTH(json_doc[, path])

Wobei json_doc ist das JSON-Dokument, für das die Tiefe zurückgegeben werden soll, und path ist ein optionales Argument, das verwendet werden kann, um die Länge eines Werts innerhalb des Dokuments zurückzugeben.

Beispiel 1 – Leeres Objekt

Hier ist ein JSON-Dokument, das nur ein leeres Objekt enthält.

SELECT JSON_LENGTH('{}') 'Result';

Ergebnis:

+--------+
| Result |
+--------+
|      0 |
+--------+

Beispiel 2 – Objekt mit Daten

Und Folgendes passiert, wenn wir Daten hinzufügen.

SELECT JSON_LENGTH('{"Name": "Homer"}') 'Result';

Ergebnis:

+--------+
| Result |
+--------+
|      1 |
+--------+

Dies gibt 1 zurück weil das Objekt ein Mitglied enthält. Wenn wir ein zweites Mitglied hinzufügen, passiert Folgendes:

SELECT JSON_LENGTH('{"Name": "Homer", "Stupid": true}') 'Result';

Ergebnis:

+--------+
| Result |
+--------+
|      2 |
+--------+

Beispiel 3 – Arrays

Die Länge eines Arrays ist die Anzahl der darin enthaltenen Elemente.

SELECT JSON_LENGTH('[1, 2, 3]') 'Result';

Ergebnis:

+--------+
| Result |
+--------+
|      3 |
+--------+

Dies gilt auch dann, wenn eines der Elemente ein eigenes Array (oder Objekt) enthält.

SELECT JSON_LENGTH('[1, 2, [3, 4]]') 'Result';

Ergebnis:

+--------+
| Result |
+--------+
|      3 |
+--------+

Beispiel 4 – Das Pfadargument

Wir können einen optionalen path angeben Argument, um die Länge eines angegebenen Pfads innerhalb des Dokuments zurückzugeben.

SET @data = '{  
    "Person": {    
       "Name": "Homer", 
       "Age": 39,
       "Hobbies": ["Eating", "Sleeping"]  
    }
 }';
SELECT JSON_LENGTH(@data, '$.Person') 'Result';

Ergebnis:

+--------+
| Result |
+--------+
|      3 |
+--------+

In diesem Fall geben wir die Länge der Person zurück Objekt, das drei Mitglieder enthält.

Wenn wir es auf nur eines dieser Mitglieder eingrenzen (z. B. Name Mitglied), erhalten wir Folgendes:

SET @data = '{  
    "Person": {    
       "Name": "Homer", 
       "Age": 39,
       "Hobbies": ["Eating", "Sleeping"]  
    }
 }';
SELECT JSON_LENGTH(@data, '$.Person.Name') 'Result';

Ergebnis:

+--------+
| Result |
+--------+
|      1 |
+--------+

Aber wenn wir es auf die Hobbies eingrenzen Array erhalten wir Folgendes:

SET @data = '{  
    "Person": {    
       "Name": "Homer", 
       "Age": 39,
       "Hobbies": ["Eating", "Sleeping"]  
    }
 }';
SELECT JSON_LENGTH(@data, '$.Person.Hobbies') 'Result';

Ergebnis:

+--------+
| Result |
+--------+
|      2 |
+--------+