sql >> Database >  >> RDS >> Mysql

Is het mogelijk om koppeltekens en spaties hetzelfde te behandelen in SQL?

Zoals iemand heeft gesuggereerd, kun je je gewoon aanpassen en fulltext zoeken gebruiken.

Als u ervoor kiest om deze route te nemen, moet u zoeken in volledige tekst inschakelen op de vereiste velden.

Ik neem aan dat je post_title en post_body (?) controleert, waarvoor je dit moet uitvoeren;

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

Als dat is gebeurd, kan uw zoekopdracht eenvoudig worden bewerkt tot;

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

Als je een betere match wilt, is het ook mogelijk om het een score en volgorde te geven, waarvoor een code nodig is die lijkt op deze:

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

--- OPMERKINGEN

Voor het zoeken moet je uitzoeken hoe je gaat zoeken.

In het laatste geval dat ik iets soortgelijks gebruikte, had ik gewoon een formulier voor de zoekterm (genaamd "Zoeken") waardoor $_POST['search'] naar de server werd gestuurd.

Ik gebruikte toen;

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

Aangezien zoeken in volledige tekst het koppelteken negeert, houdt u alleen spaties over, wat prima werkt voor volledige tekst, als u ervoor kiest om gescoorde resultaten te gebruiken.




  1. Oplossing om geen DML-bewerking binnen een query uit te voeren?

  2. Recursieve logica in PHP + MySQL

  3. Ontsnappen aan de dubbele punt ':' in JPA-query's

  4. Badges maken voor mijn site, de beste manier om gebruikersbadges op te slaan? PHP gebruiken