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

MariaDB JSON_LENGTH () Giải thích

Trong MariaDB, JSON_LENGTH() là một hàm tích hợp 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.

Chiều dài được xác định như sau:

  • Độ dài của một đại lượng vô hướng luôn là 1.
  • Nếu là một mảng, số phần tử trong mảng.
  • Nếu một đối tượng, số lượng thành viên trong đối tượng.

Độ dài của các mảng hoặc đối tượng lồng nhau không được tính.

Cú pháp

Cú pháp như sau:

JSON_LENGTH(json_doc[, path])

Ở đâu json_doc là tài liệu JSON và path là một đối số tùy chọn chỉ định một đường dẫn trong tài liệu.

Ví dụ

Đây là một ví dụ để chứng minh.

SET @json_document = '
    { 
        "name": "Wag", 
        "type": "Dog", 
        "weight": 20 
    }
';
SELECT JSON_LENGTH(@json_document);

Kết quả:

+-----------------------------+
| JSON_LENGTH(@json_document) |
+-----------------------------+
|                           3 |
+-----------------------------+

Chỉ định một đường dẫn

Dưới đây là một ví dụ về việc chỉ định một đường dẫn trong tài liệu:

SET @json_document = '
    { 
        "_id" : 1, 
        "name" : "Wag", 
        "details" : {
            "type" : "Dog",
            "awards" : { 
                "Florida Dog Awards" : "Top Dog", 
                "New York Marathon" : "Fastest Dog", 
                "Sumo 2020" : "Biggest Dog"
            }
        }
    }
';
SELECT JSON_LENGTH(@json_document, '$.details');

Kết quả:

+------------------------------------------+
| JSON_LENGTH(@json_document, '$.details') |
+------------------------------------------+
|                                        2 |
+------------------------------------------+

Như đã đề cập, nó không tính độ dài của các đối tượng lồng nhau, vì vậy chúng tôi nhận được kết quả là 2 .

Ví dụ tiếp theo đi xuống một cấp độ và đếm thời lượng của awards đối tượng:

SET @json_document = '
    { 
        "_id" : 1, 
        "name" : "Wag", 
        "details" : {
            "type" : "Dog",
            "awards" : { 
                "Florida Dog Awards" : "Top Dog", 
                "New York Marathon" : "Fastest Dog", 
                "Sumo 2020" : "Biggest Dog"
            }
        }
    }
';
SELECT JSON_LENGTH(@json_document, '$.details.awards');

Kết quả:

+-------------------------------------------------+
| JSON_LENGTH(@json_document, '$.details.awards') |
+-------------------------------------------------+
|                                               3 |
+-------------------------------------------------+

Vô hướng

Độ dài của một đại lượng vô hướng luôn là 1 :

SELECT JSON_LENGTH( 
    '{ "a" : 378, "b" : 45 }', 
    '$.a' 
    ) AS Result;

Kết quả:

+--------+
| Result |
+--------+
|      1 |
+--------+

Mảng

Nếu tài liệu là một mảng, JSON_LENGTH() đếm số phần tử trong mảng:

SET @json_document = '
    { 
        "name": "Wag", 
        "type": "Dog", 
        "scores": [9, 7, 8, 10, 3] 
    }
';
SELECT JSON_LENGTH(@json_document, '$.scores');

Kết quả:

+-----------------------------------------+
| JSON_LENGTH(@json_document, '$.scores') |
+-----------------------------------------+
|                                       5 |
+-----------------------------------------+

Đường dẫn không tồn tại

Chuyển một đường dẫn không tồn tại trong tài liệu JSON dẫn đến NULL .

Ví dụ:

SET @json_document = '
    { 
        "name": "Wag", 
        "type": "Dog"
    }
';
SELECT JSON_LENGTH(@json_document, '$.oops');

Kết quả:

+---------------------------------------+
| JSON_LENGTH(@json_document, '$.oops') |
+---------------------------------------+
|                                  NULL |
+---------------------------------------+

Đối tượng trống

Nếu đối tượng đã chọn trống, kết quả là 0 :

SELECT JSON_LENGTH('{}');

Kết quả:

+-------------------+
| JSON_LENGTH('{}') |
+-------------------+
|                 0 |
+-------------------+

Đối số rỗng

Nếu bất kỳ đối số nào là NULL , kết quả là NULL :

SELECT 
    JSON_LENGTH(null) AS a,
    JSON_LENGTH(null, '$.type') AS b,
    JSON_LENGTH('{"a":1}', null) AS c;

Kết quả:

+------+------+------+
| a    | b    | c    |
+------+------+------+
| NULL | NULL | NULL |
+------+------+------+

Đếm tham số không chính xác

Không cung cấp đối số dẫn đến lỗi:

SELECT JSON_LENGTH();

Kết quả:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_LENGTH'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiểm soát chuyển đổi dự phòng sao chép cho MySQL và MariaDB với các tập lệnh chuyển đổi dự phòng trước hoặc sau dự phòng

  2. Tránh khóa nhà cung cấp cơ sở dữ liệu cho MySQL hoặc MariaDB

  3. Hiểu các chỉ mục trong MySQL:Phần thứ hai

  4. Cách cài đặt MariaDB trên CentOS 7 / RHEL 7

  5. Cách CHR () hoạt động trong MariaDB