sql >> Database teknologi >  >> RDS >> Mysql

MySQL returnerer eksakt ordmatch fra tekstindhold

Det rigtige svar er sandsynligvis fuldtekstsøgning.

Der er dog to forbehold. Hvis du har korte strenge, såsom produktbeskrivelser eller brugerkommentarer, og vil bruge like , kan du gøre noget som dette:

where concat(' ', txt, ' ') like concat('% ', $word, ' %')

Dette forudsætter dog, at afgrænsningerne er mellemrum. Så den ville ikke finde "Hej". Du kan rette dette ved at gøre:

where concat(' ', replace(txt, ',' ' '), ' ') like concat('% ', $word, ' %')

Men du vil hurtigt opdage, at det er en smerte. Derfor:fuldtekstsøgning.

For det andet, hvis du virkelig gemmer søgeord i kolonnen, så er løsningen enklere. Gør det ikke. Opret en forbindelsestabel, der har én række pr. oprindelig tabelrække og én pr. søgeord. At gemme lister i strenge er en dårlig idé i SQL.




  1. Linker libpqxx fra Visual Studio 2015 på Windows 10

  2. Forskellen mellem mysql og mysqli

  3. Brug af resultater fra en MySQL-forespørgsel i en anden forespørgsel i et PHP-miljø

  4. SqlNullValueException ved udførelse af en lagret procedure med MySqlCommand