W MySQL funkcja JSON_LENGTH()
funkcja zwraca długość dokumentu JSON.
Gdy wywołujesz tę funkcję, podajesz dokument JSON jako argument. Możesz również podać argument ścieżki, aby zwrócić długość wartości w dokumencie.
Składnia
Składnia wygląda tak:
JSON_LENGTH(json_doc[, path])
Gdzie json_doc
jest dokumentem JSON, dla którego należy zwrócić głębokość i path
jest opcjonalnym argumentem, którego można użyć do zwrócenia długości wartości w dokumencie.
Przykład 1 – Pusty obiekt
Oto dokument JSON, który zawiera tylko pusty obiekt.
SELECT JSON_LENGTH('{}') 'Result';
Wynik:
+--------+ | Result | +--------+ | 0 | +--------+
Przykład 2 – Obiekt z danymi
A oto, co się stanie, jeśli dodamy dane.
SELECT JSON_LENGTH('{"Name": "Homer"}') 'Result';
Wynik:
+--------+ | Result | +--------+ | 1 | +--------+
Zwraca 1
ponieważ obiekt zawiera jednego członka. Jeśli dodamy drugiego członka, dzieje się tak:
SELECT JSON_LENGTH('{"Name": "Homer", "Stupid": true}') 'Result';
Wynik:
+--------+ | Result | +--------+ | 2 | +--------+
Przykład 3 – Tablice
Długość tablicy to liczba elementów, które zawiera.
SELECT JSON_LENGTH('[1, 2, 3]') 'Result';
Wynik:
+--------+ | Result | +--------+ | 3 | +--------+
To prawda, nawet jeśli jeden z elementów zawiera własną tablicę (lub obiekt).
SELECT JSON_LENGTH('[1, 2, [3, 4]]') 'Result';
Wynik:
+--------+ | Result | +--------+ | 3 | +--------+
Przykład 4 – Argument dotyczący ścieżki
Możemy podać opcjonalną path
argument zwracający długość podanej ścieżki w dokumencie.
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person') 'Result';
Wynik:
+--------+ | Result | +--------+ | 3 | +--------+
W takim przypadku zwracamy długość Person
obiekt, który zawiera trzech członków.
Jeśli zawęzimy go do tylko jednego z tych członków (powiedzmy, Name
członek), otrzymujemy to:
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person.Name') 'Result';
Wynik:
+--------+ | Result | +--------+ | 1 | +--------+
Ale jeśli zawęzimy to do Hobbies
tablica, otrzymujemy to:
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person.Hobbies') 'Result';
Wynik:
+--------+ | Result | +--------+ | 2 | +--------+