MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

MariaDB JSON_DEPTH () Giải thích

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'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cải thiện hiệu suất của Galera Cluster cho MySQL hoặc MariaDB

  2. Người dùng mới và quản lý LDAP trong ClusterControl 1.8.2

  3. Chạy ProxySQL dưới dạng Vùng chứa trợ giúp trên Kubernetes

  4. Xử lý các truy vấn chạy dài của MySQL

  5. Cách thiết lập sao chép MariaDB 10.3 bằng Ansible và Vagrant