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$';