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

Truy vấn Mysql cột WHERE nằm trong mảng json

Tôi nghĩ rằng bạn có thể đạt được điều này chỉ trong Mysql 5.7.

Trong phiên bản 5.7, bạn có thể làm điều gì đó như:

SELECT JSON_EXTRACT(json_field, '$.name');

và nó sẽ chỉ trích xuất khóa tên từ đối tượng json.

Tìm kiếm tất cả các mục bằng thẻ 'JavaScript':

SELECT * FROM `table` WHERE JSON_CONTAINS(json_field, '["JavaScript"]');

Tìm tất cả các mục có thẻ bắt đầu từ 'Java':

SELECT * FROM `table` WHERE JSON_SEARCH(json_field, 'one', 'Java%') IS NOT NULL;

sử dụng 'một' để tìm kết quả phù hợp đầu tiên hoặc 'tất cả' để tìm tất cả các kết quả phù hợp

Bạn có thể trích xuất biệt hiệu Twitter bằng đường dẫn JSON:

SELECT name, json_field->"$.twitter" AS `twitter` FROM `user`;

Bạn cũng có thể tham chiếu đường dẫn JSON trong mệnh đề WHERE để chỉ trả lại người dùng có tài khoản Twitter:

SELECT name, profile->"$.twitter" AS `twitter` FROM `user` WHERE profile->"$.twitter" IS NOT NULL;

Bạn có thể làm nhiều việc hơn như:

  • Tạo giá trị JSON

  • Chuẩn hóa, Hợp nhất và Tự động hóa các Giá trị JSON

  • Tìm kiếm và sửa đổi giá trị JSON

  • So sánh và sắp xếp thứ tự các giá trị JSON

  • Tổng hợp các giá trị JSON

để biết thêm thông tin, vui lòng tham khảo: https://dev.mysql. com / doc / refman / 5.7 / en / json.html



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thay đổi thư mục tmp của mysql

  2. Tại sao dữ liệu tôi tải lên bị đổi tên và dữ liệu tương ứng được thêm vào các hàng khác nhau?

  3. Symfony 3.4 Không có lớp siêu dữ liệu để xử lý Lỗi

  4. gạch nối theo thứ tự MySQL theo mệnh đề

  5. Cái nào nhanh hơn:MySQL / PHP hay phân phát trực tiếp từ các tệp tĩnh?