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

JSON_LENGTH () - Trả về độ dài của tài liệu JSON trong MySQL

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 |
+--------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLite INSERT - TRÊN CẬP NHẬT KHÓA DUPLICATE (UPSERT)

  2. MySQL TRÊN CẬP NHẬT KHÓA DUPLICATE cho nhiều hàng chèn trong một truy vấn

  3. Kết nối với mysql trên Amazon EC2 từ máy chủ từ xa

  4. Điều kiện WHERE trong MySQL với 16 ví dụ truy vấn khác nhau

  5. Đặc quyền của người dùng MySQL trên các máy chủ được chia sẻ