Trong MariaDB, JSON_DEPTH()
là một chức năng tích hợp cho phép bạn kiểm tra độ sâu của tài liệu JSON.
Nó chấp nhận tài liệu JSON làm đối số và trả về độ sâu tối đa của tài liệu.
Cú pháp
Cú pháp như sau:
JSON_DEPTH(json_doc)
Ở đâu json_doc
là tài liệu JSON để trả về độ sâu.
Ví dụ
Đây là một ví dụ để chứng minh.
SELECT JSON_DEPTH('{ "name": "Wag" }');
Kết quả:
+---------------------------------+ | JSON_DEPTH('{ "name": "Wag" }') | +---------------------------------+ | 2 | +---------------------------------+
Trong trường hợp này, độ sâu là 2
.
Giá trị vô hướng &Đối tượng / Mảng trống
Giá trị vô hướng hoặc mảng hoặc đối tượng trống có độ sâu 1
:
SELECT
JSON_DEPTH('{}'),
JSON_DEPTH('[]'),
JSON_DEPTH(1);
Kết quả:
+------------------+------------------+---------------+ | JSON_DEPTH('{}') | JSON_DEPTH('[]') | JSON_DEPTH(1) | +------------------+------------------+---------------+ | 1 | 1 | 1 | +------------------+------------------+---------------+
Tài liệu JSON sâu hơn
Dưới đây là một ví dụ sử dụng tài liệu JSON có độ sâu 4
:
SET @json_document = '
{
"_id" : 1,
"name" : "Wag",
"details" : {
"type" : "Dog",
"weight" : 20,
"awards" : {
"Florida Dog Awards" : "Top Dog",
"New York Marathon" : "Fastest Dog",
"Sumo 2020" : "Biggest Dog"
}
}
}
';
SELECT JSON_DEPTH(@json_document);
Kết quả:
+----------------------------+ | JSON_DEPTH(@json_document) | +----------------------------+ | 4 | +----------------------------+
Đối số rỗng
Nếu đối số là NULL
, kết quả là NULL
:
SELECT JSON_DEPTH(null);
Kết quả:
+------------------+ | JSON_DEPTH(null) | +------------------+ | NULL | +------------------+
JSON không hợp lệ
Chuyển JSON không hợp lệ dẫn đến NULL
với một cảnh báo:
SELECT JSON_DEPTH('{1}');
Kết quả:
+-------------------+ | JSON_DEPTH('{1}') | +-------------------+ | NULL | +-------------------+ 1 row in set, 1 warning (0.000 sec)
Hãy xem cảnh báo:
SHOW WARNINGS;
Kết quả:
+---------+------+--------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------------------------------------------------+ | Warning | 4038 | Syntax error in JSON text in argument 1 to function 'json_depth' at position 2 | +---------+------+--------------------------------------------------------------------------------+
Đếm tham số không chính xác
Không cung cấp đối số dẫn đến lỗi:
SELECT JSON_DEPTH();
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DEPTH'
Điều này cũng tương tự khi bạn cung cấp quá nhiều đối số:
SELECT JSON_DEPTH('{"a": 1}', 2);
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DEPTH'