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

JSON_REPLACE () - Thay thế giá trị trong tài liệu JSON trong MySQL

Trong MySQL, JSON_REPLACE() hàm thay thế các giá trị trong tài liệu JSON và trả về kết quả.

Bạn cung cấp tài liệu JSON làm đối số đầu tiên, theo sau là đường dẫn để thay thế dữ liệu tại, theo sau là giá trị để thay thế giá trị hiện tại bằng.

Bạn có thể thay thế dữ liệu ở nhiều vị trí trong tài liệu nếu cần. Để thực hiện việc này, chỉ cần cung cấp nhiều cặp đường dẫn / giá trị theo yêu cầu.

Cú pháp

Cú pháp như sau:

 JSON_REPLACE (json_doc, path, val [, path, val] ...) 

Ở đâu json_doc là tài liệu JSON, path là đường dẫn để thay thế dữ liệu tại và val là giá trị mới để thay thế giá trị hiện tại.

Các cặp đường dẫn / giá trị được đánh giá từ trái sang phải. Tài liệu được tạo ra bằng cách đánh giá một cặp sẽ trở thành giá trị mới mà cặp tiếp theo được đánh giá.

Nếu cặp đường dẫn / giá trị không tồn tại trong tài liệu JSON, thì nó sẽ bị bỏ qua và không có hiệu lực.

Đối số đầu tiên phải là tài liệu JSON hợp lệ, nếu không sẽ xảy ra lỗi.

Ngoài ra, path đối số phải là một biểu thức đường dẫn hợp lệ và nó không được chứa * hoặc ** ký tự đại diện, nếu không sẽ xảy ra lỗi.

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

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

 SELECT JSON_REPLACE ('{"a":1, "b":2, "c":3}', '$ .b', 9) NHƯ 'Kết quả'; 

Kết quả:

 + -------------------------- + | Kết quả | + -------------------------- + | {"a":1, "b":9, "c":3} | + -------------------------- +  

Trong trường hợp này, chúng tôi đã thay thế b Giá trị của ‘s với 9 . Điều này là do chúng tôi đã chỉ định $.b làm đối số thứ hai và 9 như thứ ba.

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

 SELECT JSON_REPLACE ('{"Name":"Bart", "Age":10}', '$ .Name', 'Nelson - Ha Ha!') NHƯ 'Kết quả'; 

Kết quả:

 + ---------------------------------------- + | Kết quả | + ---------------------------------------- + | {"Tuổi":10, "Tên":"Nelson - Ha Ha!"} | + ----------------------------- ----------- + 

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, không có gì bị xóa. Tài liệu JSON gốc được trả lại mà không cần sửa đổi.

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

Kết quả:

 + ------------------------------ + | Kết quả | + ------------------------------ + | {"Tuổi":39, "Tên":"Homer"} | + ------------------------------ +  

Ví dụ 3 - Mảng

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

 CHỌN JSON_REPLACE ('[1, 2, 3]', '$ [0]', 9) NHƯ 'Kết quả'; 

Kết quả:

 + ----------- + | Kết quả | + ----------- + | [9, 2, 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ử đầu tiên được thay thế.

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

 SELECT JSON_REPLACE ('[1, 2, [3, 4, 5]]', '$ [2] [1]', 9) AS 'Kết quả'; 

Kết quả:

 + ------------------- + | Kết quả | + ------------------- + | [1, 2, [3, 9, 5]] | + ------------------- + 

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

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

Ví dụ cơ bản:

 CHỌN JSON_REPLACE ('[1, 2, 3, 4, 5]', '$ [1]', 9, '$ [3]', 22) NHƯ 'Kết quả'; 

Kết quả:

 + ------------------ + | Kết quả | + ------------------ + | [1, 9, 3, 22, 5] | + ------------------ + 

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 ='{"Người":{"Tên":"Homer", "Tuổi":39, "Sở thích":["Ăn", "Ngủ"]}}'; CHỌN JSON_REPLACE (@data , '$ .Person.Name', 'Bart', '$ .Person.Age', 10, '$ .Person.Hobbies [1]', 'Base Jumping') NHƯ 'Kết quả'; 

Kết quả:

 + ---------------------------------------------- ---------------------------------- + | Kết quả | + ----------------------------------------------- --------------------------------- + | {"Người":{"Tuổi":10, "Tên":"Bart", "Sở thích":["Ăn uống", "Nhảy cơ bản"]}} | + ------------ -------------------------------------------------- ------------------ + 

  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ách cài đặt MySQL trên Debian 8

  2. Làm cách nào để truy vấn giữa hai ngày bằng MySQL?

  3. Định dạng biến MySQL cho danh sách giá trị NOT IN

  4. Hướng dẫn thiết kế cơ sở dữ liệu cho hệ thống quản lý nhân viên trong MySQL

  5. Cột không xác định trong mệnh đề Where