Trong MySQL, JSON_LENGTH()
hàm trả về độ dài của tài liệu JSON.
Khi bạn gọi hàm này, bạn cung cấp tài liệu JSON làm đối số. Bạn cũng có thể cung cấp đối số đường dẫn để trả về độ dài của một giá trị trong tài liệu.
Cú pháp
Cú pháp như sau:
JSON_LENGTH(json_doc[, path])
Ở đâu json_doc
là tài liệu JSON để trả về độ sâu và path
là một đối số tùy chọn có thể được sử dụng để trả về độ dài của một giá trị trong tài liệu.
Ví dụ 1 - Đối tượng rỗng
Đây là tài liệu JSON không chứa gì ngoài một đối tượng trống.
SELECT JSON_LENGTH('{}') 'Result';
Kết quả:
+--------+ | Result | +--------+ | 0 | +--------+
Ví dụ 2 - Đối tượng có dữ liệu
Và đây là những gì sẽ xảy ra nếu chúng tôi thêm dữ liệu.
SELECT JSON_LENGTH('{"Name": "Homer"}') 'Result';
Kết quả:
+--------+ | Result | +--------+ | 1 | +--------+
Điều này trả về 1
bởi vì đối tượng chứa một thành viên. Nếu chúng tôi thêm thành viên thứ hai, đây là điều sẽ xảy ra:
SELECT JSON_LENGTH('{"Name": "Homer", "Stupid": true}') 'Result';
Kết quả:
+--------+ | Result | +--------+ | 2 | +--------+
Ví dụ 3 - Mảng
Chiều dài của một mảng là số phần tử mà nó chứa.
SELECT JSON_LENGTH('[1, 2, 3]') 'Result';
Kết quả:
+--------+ | Result | +--------+ | 3 | +--------+
Điều này đúng, ngay cả khi một trong các phần tử chứa mảng (hoặc đối tượng) của chính nó.
SELECT JSON_LENGTH('[1, 2, [3, 4]]') 'Result';
Kết quả:
+--------+ | Result | +--------+ | 3 | +--------+
Ví dụ 4 - Đối số đường dẫn
Chúng tôi có thể cung cấp một path
tùy chọn đối số để trả về độ dài của một đường dẫn nhất định trong tài liệu.
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person') 'Result';
Kết quả:
+--------+ | Result | +--------+ | 3 | +--------+
Trong trường hợp này, chúng tôi trả về độ dài của Person
đối tượng, chứa ba thành viên.
Nếu chúng tôi thu hẹp nó xuống chỉ một trong những thành viên đó (giả sử, Name
thành viên), chúng tôi nhận được điều này:
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person.Name') 'Result';
Kết quả:
+--------+ | Result | +--------+ | 1 | +--------+
Nhưng nếu chúng ta thu hẹp nó thành Hobbies
mảng, chúng tôi nhận được điều này:
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person.Hobbies') 'Result';
Kết quả:
+--------+ | Result | +--------+ | 2 | +--------+