Mysql
 sql >> база данни >  >> RDS >> Mysql

Възможно ли е да третираме тирета и интервали еднакво в SQL?

Както някой предложи, можете просто да се адаптирате и да използвате пълнотекстово търсене.

Ако решите да поемете по този маршрут, ще трябва да активирате пълнотекстово търсене в задължителните полета.

Предполагам, че ще проверите post_title и post_body (?), които трябва да стартирате това;

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

Когато това е направено, вашата заявка за търсене може лесно да бъде редактирана, за да стане;

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

Ако искате по-добро съвпадение, също е възможно да му дадете оценка и да подредите по това, което ще изисква код, подобен на този:

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

--- БЕЛЕЖКИ

За търсенето трябва да разберете как ще търсите.

В последния случай използвах подобно, просто имах формуляр за думата за търсене (наречена „Търсене“), което води до изпращане на $_POST['search'] до сървъра.

След това използвах;

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

Тъй като търсенето в пълен текст ще пренебрегне тирето, остават ви само интервали, което работи чудесно за пълен текст, ако решите да използвате резултатите с точки.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL изчислява плъзгащата се средна стойност на N реда

  2. Как мога да използвам едновременен достъп до таблицата mysql в PHP

  3. Ansible идемпотентна MySQL инсталация Playbook

  4. Sqlalchemy, необработена заявка и параметри

  5. MySQL динамична кръстосана заявка:Избиране на дъщерни записи като допълнителни колони