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

MySQL - Cách nhận kết quả tìm kiếm với mức độ liên quan chính xác

Bạn có thể sử dụng các hàm chuỗi, chẳng hạn như:

select id, name
from subjects
where name like concat('%', @search, '%')
order by 
  name like concat(@search, '%') desc,
  ifnull(nullif(instr(name, concat(' ', @search)), 0), 99999),
  ifnull(nullif(instr(name, @search), 0), 99999),
  name;

Điều này giúp bạn có được tất cả các mục có chứa @search. Đầu tiên là những cái có nó ở đầu, sau đó là những cái có nó sau chỗ trống, sau đó theo vị trí của lần xuất hiện, rồi theo thứ tự bảng chữ cái.

name like concat(@search, '%') desc nhân tiện sử dụng logic boolean của MySQL. 1 =true, 0 =false, vì vậy thứ tự giảm dần này sẽ cho bạn true trước.

SQL fiddle: http://sqlfiddle.com/#!9/c6321a/1



  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 nhanh nhất để thăm dò một bảng MySQL cho các hàng mới là gì?

  2. Tối ưu hóa hiệu suất ghi cho phiên bản AWS Aurora

  3. Tải xml vào bảng mysql với phần tử

  4. Làm cách nào để hủy khai báo khối lượng trong hình ảnh docker?

  5. Ví dụ về MAKETIME () - MySQL