Le principal avantage est de pouvoir construire des requêtes beaucoup plus complexes qu'un simple LIKE
en exploitant toute la puissance des expressions régulières.
Quelques exemples basiques
SELECT * FROM clients WHERE nom LIKE 't%' ; SELECT * FROM clients WHERE nom REGEXP '^t' ; SELECT * FROM clients WHERE nom LIKE '%d' ; SELECT * FROM clients WHERE nom REGEXP "d$";
Exemple plus difficile à réaliser avec un simple LIKE
SELECT * FROM clients WHERE nom REGEXP '^.{4}$' ;
Autre exemple : isoler un mot précis
SELECT * FROM textes WHERE contenu REGEXP '[^a-z]bonjour[^a-z]' ;
Si vous désirez que votre requête soit sensible à la casse, vous devez utiliser la commande REGEXP BINARY
.
SELECT * FROM textes WHERE contenu REGEXP BINARY '[^a-zA-Z]Bonjour[^a-zA-Z]' ;
Attention: Au niveau sécurité, au delà de la protection contre les injections SQL, n'oubliez pas aussi de protéger vos requêtes contre les injections d'expressions régulières par rapport aux caractères spéciaux comme les ".", "*", "+", "?", etc...