В MySQL, JSON_LENGTH()
функцията връща дължината на JSON документ.
Когато извикате тази функция, вие предоставяте документа JSON като аргумент. Можете също да предоставите аргумент за път, за да върнете дължината на стойност в документа.
Синтаксис
Синтаксисът е така:
JSON_LENGTH(json_doc[, path])
Където json_doc
е JSON документът, за който да се върне дълбочината и path
е незадължителен аргумент, който може да се използва за връщане на дължината на стойност в документа.
Пример 1 – Празен обект
Ето JSON документ, който не съдържа нищо освен празен обект.
SELECT JSON_LENGTH('{}') 'Result';
Резултат:
+--------+ | Result | +--------+ | 0 | +--------+
Пример 2 – Обект с данни
И ето какво се случва, ако добавим данни.
SELECT JSON_LENGTH('{"Name": "Homer"}') 'Result';
Резултат:
+--------+ | Result | +--------+ | 1 | +--------+
Това връща 1
тъй като обектът съдържа един член. Ако добавим втори член, ето какво се случва:
SELECT JSON_LENGTH('{"Name": "Homer", "Stupid": true}') 'Result';
Резултат:
+--------+ | Result | +--------+ | 2 | +--------+
Пример 3 – Масиви
Дължината на масива е броят на елементите, които съдържа.
SELECT JSON_LENGTH('[1, 2, 3]') 'Result';
Резултат:
+--------+ | Result | +--------+ | 3 | +--------+
Това е вярно, дори ако един от елементите съдържа свой собствен масив (или обект).
SELECT JSON_LENGTH('[1, 2, [3, 4]]') 'Result';
Резултат:
+--------+ | Result | +--------+ | 3 | +--------+
Пример 4 – Аргумент за пътя
Можем да предоставим незадължителен path
аргумент за връщане на дължината на даден път в документа.
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person') 'Result';
Резултат:
+--------+ | Result | +--------+ | 3 | +--------+
В този случай връщаме дължината на Person
обект, който съдържа три члена.
Ако го ограничим само до един от тези членове (да речем, Name
член), получаваме това:
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person.Name') 'Result';
Резултат:
+--------+ | Result | +--------+ | 1 | +--------+
Но ако го ограничим до Hobbies
масив, получаваме това:
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person.Hobbies') 'Result';
Резултат:
+--------+ | Result | +--------+ | 2 | +--------+