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

Comment utiliser des caractères génériques de préfixe comme '* abc' avec match-against

La correspondance ne fonctionne pas avec les caractères génériques de départ, donc la correspondance avec *abc* ne fonctionnera pas. Vous devrez utiliser LIKE pour y parvenir :

SELECT * FROM user WHERE user_login LIKE '%abc';

Ce sera cependant très lent.

Si vous avez vraiment besoin de faire correspondre la fin de la chaîne, et que vous devez le faire souvent alors que la performance vous tue, une solution serait de créer une colonne séparée dans laquelle vous inversez les chaînes, donc vous avez :

user_login user_login_rev
xyzabc     cbazyx

Ensuite, au lieu de chercher '%abc' , vous pouvez rechercher 'cba%' ce qui est beaucoup plus rapide si la colonne est indexée. Et vous pouvez à nouveau utiliser MATCH si vous souhaitez rechercher 'cba*' . Il vous suffira également d'inverser la chaîne de recherche.