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

PHP / MySQL:Đánh dấu SOUNDS LIKE kết quả truy vấn

Lưu ý rằng SOUNDS LIKE không hoạt động như bạn nghĩ. Nó không tương đương với LIKE trong MySQL, vì nó không hỗ trợ % ký tự đại diện.

Điều này có nghĩa là truy vấn của bạn sẽ không tìm thấy "John David" khi tìm kiếm "John". Điều này có thể chấp nhận được nếu đây chỉ là dự phòng của bạn, nhưng nó không phải là lý tưởng.

Vì vậy, đây là một gợi ý khác (có thể cần cải thiện); trước tiên hãy sử dụng PHPs soundex() chức năng để tìm soundex của từ khóa bạn đang tìm kiếm.

$soundex = soundex($word);
$soundexPrefix = substr($soundex, 0, 2); // first two characters of soundex
$sql = "SELECT lastname, firstname ".
    "FROM table WHERE SOUNDEX(lastname) LIKE '$soundexPrefix%' ".
    "OR SOUNDEX(firstname) LIKE '$soundexPrefix%'";

Bây giờ bạn sẽ có một danh sách các tên và họ có sự giống nhau mơ hồ về cách phát âm (đây có thể là rất nhiều mục nhập và bạn có thể muốn tăng độ dài của tiền tố soundex mà bạn sử dụng cho tìm kiếm của mình). Sau đó, bạn có thể tính toán khoảng cách Levenshtein giữa soundex của mỗi từ và cụm từ tìm kiếm của bạn và sắp xếp theo điều đó.

Thứ hai, bạn nên xem xét các truy vấn được tham số hóa trong MySQL, để tránh lỗi chèn SQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để lưu trữ hơn 255 ký tự trong cơ sở dữ liệu MySQL?

  2. so sánh ngày cơ bản để kiểm tra ngày hết hạn

  3. Mysql + php, cách tạo liên kết hiển thị tất cả dữ liệu từ bản ghi khi bạn nhấn vào dòng tiêu đề

  4. Không thể truy cập MySQL sau khi nó tự động tạo mật khẩu tạm thời

  5. Chỉ mục MySQL - bao nhiêu là đủ?