Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy myślniki i spacje można traktować tak samo w SQL?

Jak ktoś zasugerował, możesz po prostu dostosować i użyć wyszukiwania pełnotekstowego.

Jeśli wybierzesz tę trasę, musisz włączyć wyszukiwanie pełnotekstowe w wymaganych polach.

Zakładam, że sprawdzisz post_title i post_body (?), które wymagają uruchomienia tego;

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

Gdy to zrobisz, twoje zapytanie może być łatwo edytowane, aby stać się;

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

Jeśli chcesz lepsze dopasowanie, możesz również przyznać mu punktację i kolejność według tego, co wymagałoby kodu podobnego do tego:

$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";

--- UWAGI

Aby przeprowadzić wyszukiwanie, musisz ustalić, w jaki sposób będziesz wyszukiwać.

W ostatnim przypadku użyłem podobnego, po prostu miałem formularz dla wyszukiwanego terminu (o nazwie „Wyszukaj”), co spowodowało wysłanie $_POST['search'] na serwer.

następnie użyłem;

$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)
}

Ponieważ wyszukiwanie pełnotekstowe zignoruje myślnik, pozostaną tylko spacje, co świetnie sprawdza się w przypadku pełnego tekstu, jeśli zdecydujesz się używać wyników z punktacją.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jaki jest pożytek z opcji pool w database.yml?

  2. Trwała data w bazie danych nie jest równa pobranej dacie

  3. Zresetuj hasło root serwera MySQL

  4. Wybieranie ostatnich wpisów do odrębnego wpisu

  5. oblicz sumę czasu na wpisywanie za pomocą sql