sql >> Databasteknik >  >> RDS >> Mysql

MySQL returnerar exakt ordmatchning från textinnehåll

Rätt svar är förmodligen fulltextsökning.

Det finns dock två varningar. Om du har korta strängar, som produktbeskrivningar eller användarkommentarer, och vill använda like , kan du göra något så här:

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

Detta förutsätter dock att avgränsningarna är mellanrum. Så den skulle inte hitta "Hej". Du kan fixa detta genom att göra:

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

Men du kommer snabbt att upptäcka att det här är jobbigt. Därför:fulltextsökning.

För det andra, om du verkligen lagrar sökord i kolumnen, då är lösningen enklare. Gör inte det. Skapa en korsningstabell som har en rad per ursprungliga tabellrad och en per nyckelord. Att lagra listor i strängar är en dålig idé i SQL.




  1. Kombinera två kolumner i en kolumn

  2. ln:/usr/lib/libmysqlclient.18.dylib:Filen finns

  3. Förbigå tabellbehörighet och MED BETYDNINGSALTERNATIV genom att skapa vyer

  4. TypeError:'int'-objekt stöder inte indexering