Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL renvoie la correspondance exacte des mots à partir du contenu du texte

La bonne réponse est probablement la recherche en texte intégral.

Cependant, il y a deux mises en garde. Si vous avez des chaînes courtes, telles que des descriptions de produits ou des commentaires d'utilisateurs, et que vous souhaitez utiliser like , vous pouvez faire quelque chose comme ceci :

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

Cependant, cela suppose que les délimiteurs sont des espaces. Ainsi, il ne trouverait pas "Bonjour". Vous pouvez résoudre ce problème en faisant :

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

Mais vous constaterez rapidement que c'est pénible. D'où :recherche plein texte.

Deuxièmement, si vous stockez vraiment des mots clés dans la colonne, alors la solution est plus simple. Ne fais pas ça. Créez une table de jonction comportant une ligne par ligne de table d'origine et une par mot-clé. Stocker des listes dans des chaînes est une mauvaise idée en SQL.