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

JSON_EXTRACT () - Trả về dữ liệu từ tài liệu JSON trong MySQL

Trong MySQL, JSON_EXTRACT() hàm trả về dữ liệu từ một tài liệu JSON. Dữ liệu thực tế được trả về được xác định bởi đường dẫn bạn cung cấp như một đối số.

Bạn cung cấp tài liệu JSON làm đối số đầu tiên, theo sau là đường dẫn của dữ liệu để trả về. Bạn cũng có thể cung cấp nhiều đường dẫn để trả về dữ liệu từ nhiều nơi trong tài liệu.

Cú pháp

Cú pháp như sau:

JSON_EXTRACT(json_doc, path[, path] ...)

Ở đâu json_doc là tài liệu JSON và path là đường dẫn đến giá trị để trả về.

Nếu có thể các đối số đó có thể trả về nhiều giá trị, thì các giá trị phù hợp sẽ được tự động gói lại thành một mảng, theo thứ tự tương ứng với các đường dẫn đã tạo ra chúng.

Ví dụ 1 - Cách sử dụng cơ bản

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

SELECT JSON_EXTRACT('{"a": 1, "b": 2, "c": 3}', '$.b') AS 'Result';

Kết quả:

+--------+
| Result |
+--------+
| 2      |
+--------+

Trong trường hợp này, chúng tôi đã trả về giá trị của khóa b .

Đây là một ví dụ khác:

SELECT 
  JSON_EXTRACT('{"Name": "Bart", "Age": 10}', '$.Name') AS 'Result';

Kết quả:

+--------+
| Result |
+--------+
| "Bart" |
+--------+

Ví dụ 2 - Đường dẫn Không tồn tại

Nếu bạn chỉ định một đường dẫn không tồn tại, giá trị NULL sẽ được trả về.

SELECT 
  JSON_EXTRACT('{"Name": "Homer", "Age": 39}', '$.Gender') AS 'Result';

Kết quả:

+--------+
| Result |
+--------+
| NULL   |
+--------+

Bạn cũng sẽ nhận được giá trị NULL nếu bất kỳ đối số nào là NULL .

Ví dụ 3 - Mảng

Đây là một ví dụ sử dụng một mảng.

SELECT JSON_EXTRACT('[1, 2, 3]', '$[2]') AS 'Result';

Kết quả:

+--------+
| Result |
+--------+
| 3      |
+--------+

Mảng sử dụng cách đánh số dựa trên 0, vì vậy trong trường hợp này, phần tử thứ ba được thay thế.

Đây là một ví dụ về mảng khác. Lần này, chúng tôi trả về một giá trị từ một mảng lồng nhau.

SELECT JSON_EXTRACT('[1, 2, [3, 4, 5]]', '$[2][1]') AS 'Result';

Kết quả:

+--------+
| Result |
+--------+
| 4      |
+--------+

Ví dụ 4 - Nhiều Đường dẫn

Bạn có thể chỉ định nhiều hơn một đường dẫn để trả về dữ liệu từ nhiều nơi trong tài liệu JSON.

Ví dụ cơ bản:

SELECT JSON_EXTRACT('[1, 2, 3, 4, 5]', '$[1]', '$[3]') AS 'Result';

Kết quả:

+--------+
| Result |
+--------+
| [2, 4] |
+--------+

Ví dụ 5 - Tài liệu JSON lớn hơn

Dưới đây là một ví dụ với tài liệu JSON lớn hơn một chút.

SET @data = '{  
    "Person": {    
       "Name": "Homer", 
       "Age": 39,
       "Hobbies": ["Eating", "Sleeping"]  
    }
 }';
SELECT JSON_EXTRACT(@data, '$.Person.Name', '$.Person.Age', '$.Person.Hobbies') AS 'Result';

Kết quả:

+---------------------------------------+
| Result                                |
+---------------------------------------+
| ["Homer", 39, ["Eating", "Sleeping"]] |
+---------------------------------------+

Chúng tôi cũng có thể chọn một phần tử cụ thể từ mảng nếu cần:

SET @data = '{  
    "Person": {    
       "Name": "Homer", 
       "Age": 39,
       "Hobbies": ["Eating", "Sleeping"]  
    }
 }';
SELECT JSON_EXTRACT(@data, '$.Person.Name', '$.Person.Age', '$.Person.Hobbies[1]') AS 'Result';

Kết quả:

+---------------------------+
| Result                    |
+---------------------------+
| ["Homer", 39, "Sleeping"] |
+---------------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL kết hợp hai cột và thêm vào một cột mới

  2. Tại sao MySQL không hỗ trợ độ chính xác mili giây / micro giây?

  3. Cách kiểm tra xem một bảng đã tồn tại chưa trước khi tạo nó trong MySQL

  4. php mysqli_connect:phương thức xác thực không xác định đối với ứng dụng khách [caching_sha2_password]

  5. MySQL năm 2018:Có gì trong 8.0 và các quan sát khác