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 | +--------+