MySQL - Regexps
Vous avez vu un modèle MySQL correspondant avec LIKE ...%. MySQL prend en charge un autre type d'opération de correspondance de modèle basée sur les expressions régulières etREGEXPopérateur. Si vous connaissez PHP ou PERL, alors c'est très simple à comprendre car cette correspondance est la même que celles qui écrivent les expressions régulières.
Voici le tableau des motifs, qui peut être utilisé avec le REGEXP opérateur.
Modèle | À quoi correspond le motif |
---|---|
^ | Début de chaîne |
$ | Fin de chaîne |
. | Tout caractère unique |
[...] | Tout caractère répertorié entre les crochets |
[^ ...] | Tout caractère non répertorié entre les crochets |
p1 | p2 | p3 | Alternance; correspond à l'un des motifs p1, p2 ou p3 |
* | Zéro ou plusieurs instances de l'élément précédent |
+ | Une ou plusieurs instances de l'élément précédent |
{n} | n instances de l'élément précédent |
{m, n} | m à n instances de l'élément précédent |
Exemples
À présent, sur la base du tableau ci-dessus, vous pouvez effectuer différents types de requêtes SQL pour répondre à vos besoins. Ici, j'en énumère quelques-uns pour votre compréhension.
Considérez que nous avons une table appelée person_tbl et c'est avoir un champ appelé name -
Requête pour trouver tous les noms commençant par 'st' -
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';
Requête pour trouver tous les noms se terminant par 'ok' -
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';
Requête pour trouver tous les noms qui contiennent 'mar' -
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';
Requête pour trouver tous les noms commençant par une voyelle et se terminant par 'ok' -
mysql> SELECT FirstName FROM intque.person_tbl WHERE FirstName REGEXP '^[aeiou].*ok$';