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

Có thể coi dấu gạch ngang và dấu cách giống nhau trong SQL không?

Như ai đó đã đề xuất, bạn chỉ có thể điều chỉnh và sử dụng tìm kiếm toàn văn bản.

Nếu bạn chọn đi theo con đường này, bạn sẽ cần phải bật tìm kiếm toàn văn bản trên các trường bắt buộc.

Tôi giả sử bạn sẽ kiểm tra post_title và post_body (?), Những thứ cần bạn chạy nó;

ALTER TABLE `posts` ADD FULLTEXT KEY `post_search` (`post_title`,`post_body`);

Khi điều đó hoàn tất, truy vấn tìm kiếm của bạn có thể dễ dàng được chỉnh sửa để trở thành;

$sql = "SELECT * FROM `posts` WHERE MATCH(post_title,post_body) AGAINST '$search'";

Nếu bạn muốn khớp tốt hơn, bạn cũng có thể cho điểm và đặt hàng theo thứ tự đó, yêu cầu mã tương tự như sau:

$sql = "SELECT *, MATCH(post_title, post_body) AGAINST ('{$search}') AS score ".
       "FROM `posts` WHERE MATCH(post_title, post_body) AGAINST ('{$search}') ORDER BY `score` DESC";

--- LƯU Ý

Đối với việc tìm kiếm, bạn cần phải tìm ra cách bạn sẽ tìm kiếm.

Trong trường hợp trước tôi đã sử dụng tương tự, tôi chỉ đơn giản có một biểu mẫu cho cụm từ tìm kiếm (Được đặt tên là "Tìm kiếm") dẫn đến $ _POST ['search'] được gửi đến máy chủ.

Sau đó tôi đã sử dụng;

$search = (array_key_exists('search', $_POST) && is_string($_POST['search'])) ? mysql_real_escape_string($_POST['search'], $c) : FALSE ;
if ($search) {
    // Do the fulltext query requires (See above)
}

Vì tìm kiếm toàn văn bản sẽ bỏ qua dấu gạch nối, bạn chỉ còn lại khoảng trắng, điều này rất phù hợp với toàn văn bản, nếu bạn chọn sử dụng kết quả được ghi điểm.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhập tệp CSV lớn vào MySQL

  2. MySQL NOT IN truy vấn

  3. Tìm nạp dữ liệu từ Mysql DB sang listView bằng JSON và PHP

  4. Làm thế nào để thực hiện một truy vấn được lưu trữ trong một cột bảng MySQL?

  5. NULL trong MySQL (Hiệu suất &Lưu trữ)