Correspondance exacte du texte intégral MySQL
La recherche de mots-clés dans un champ de texte est une tâche courante, mais parfois vous souhaitez simplement faire correspondre des mots exacts. Par exemple, si vous recherchez « rid », vous ne souhaitez pas obtenir des résultats comme « aride », mais uniquement des instances de « a rid ».
La requête SQL de MySQL apporte une solution à ce problème. Cet article examine en profondeur les moyens de trouver des correspondances de mots complètes dans MySQL.
La merveilleuse utilisation des expressions régulières
La fonction REGEXP de MySQL est cruciale pour affiner les recherches de texte. Il vous permet d'utiliser les marqueurs de limites de mots [[:<:]]
et [[:>:]]
pour limiter la correspondance aux mots complets. Considérez la requête suivante :
<code class="language-sql">SELECT * FROM table WHERE keywords REGEXP '[[:<:]]rid[[:>:]]'</code>
Cette requête correspond aux lignes où le champ keywords
contient « rid » comme un seul mot. Il exclut les correspondances partielles comme « aride » ou « co-rid ».
MySQL 8.0.4 et supérieur
Dans MySQL 8.0.4 et versions ultérieures, le moteur d'expressions régulières a été amélioré. Les marqueurs de limites de mots ont été mis à jour selon la norme b
. Par conséquent, la requête ci-dessus devient :
<code class="language-sql">SELECT * FROM table WHERE keywords REGEXP '\brid\b'</code>
N'oubliez pas d'échapper la barre oblique inverse (\
) avec une autre barre oblique inverse () pour éviter les vulnérabilités d'injection SQL.
Cette méthode constitue un moyen pratique et efficace de rechercher des correspondances de mots complètes dans MySQL, quelle que soit la taille de votre base de données ou vos exigences de performances. Il vous permet d'affiner vos requêtes et d'augmenter la pertinence de vos résultats de recherche.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!