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

Tìm kiếm mảng bài đăng trong giá trị cột được phân tách bằng dấu phẩy

Giải pháp 1:

Như @Jens đã nhận xét, đó là một thiết kế DB tồi để lưu trữ các giá trị dưới dạng CSV. Vì vậy, giải pháp đầu tiên là thay đổi thiết kế DB của bạn vì tôi thực sự không biết bạn đang lưu trữ những gì và mục đích của DB / mã của tôi là gì. không thể viết một lược đồ hoặc đưa ra bất kỳ đề xuất có ý nghĩa nào.

Giải pháp 2:

Sử dụng find_in_set chức năng.

SELECT id FROM table
WHERE FIND_IN_SET(searchFilterHere, filter_data)

Giải pháp 3:

Bạn có thể sử dụng LIKE nhà điều hành. (Một số thành viên có thể sẽ giết tôi vì đề xuất nó, nhưng nếu bạn không muốn thay đổi thiết kế DB của mình - đây là một tùy chọn sáng tạo).

Hãy kiểm tra đoạn mã sau:

SELECT id FROM table WHERE filter_data LIKE '%2,%'

Vấn đề là nó sẽ trả về id của một trường có 22, trong cột của filter_data. Do đó, bạn sẽ phải thay đổi dữ liệu trong cột đó sao cho , cũng sẽ xuất hiện dưới dạng ký tự đầu tiên và cuối cùng. Ví dụ:

id | filter_data   |
---|---------------
1  |,2,3,45,67,4,  |
2  |,2,3,55,33,5,7,|

Và bây giờ bạn có thể làm như sau:

SELECT id FROM table WHERE filter_data LIKE '%,2,%'

Nếu bạn có nhiều "bộ lọc tìm kiếm", bạn có thể kết hợp LIKE s bằng HOẶC nhà điều hành.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP PDO với foreach và tìm nạp

  2. Trình điều khiển jdbc org.gjt.mm.mysql.Driver để làm gì?

  3. LENGTH () trong MySQL là gì?

  4. Sequelize:nhiều mệnh đề where

  5. Bảng bạn bè trong MySQL