MySQLi - Regexps

Vous avez vu la correspondance de modèles MySQLi avec LIKE ...%. MySQLi prend en charge un autre type d'opération de correspondance de modèle basée sur des expressions régulières etREGEXPopérateur. Si vous connaissez PHP ou PERL, c'est très simple à comprendre car cette correspondance est très similaire à ces expressions régulières de script.

Voici le tableau des motifs, qui peut être utilisé avec 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 tutorials_inf et qu'elle a un champ appelé name -

Requête pour trouver tous les noms commençant par «sa»

mysql>  SELECT * FROM tutorials_inf WHERE name REGEXP '^sa';

L'exemple de sortie devrait être comme ceci -

+----+------+
| id | name |
+----+------+
|  1 | sai  |
+----+------+
1 row in set (0.00 sec)

Requête pour trouver tous les noms se terminant par «ai»

mysql> SELECT * FROM tutorials_inf WHERE name REGEXP 'ai$';

L'exemple de sortie devrait être comme ceci -

+----+------+
| id | name |
+----+------+
|  1 | sai  |
+----+------+
1 row in set (0.00 sec)

Requête pour trouver tous les noms contenant 'a'

mysql> SELECT * FROM tutorials_inf WHERE name REGEXP 'a';

L'exemple de sortie devrait être comme ceci -

+----+-------+
| id | name  |
+----+-------+
|  1 | sai   |
|  3 | ram   |
|  4 | johar |
+----+-------+
3 rows in set (0.00 sec)

Requête pour trouver tous les noms commençant par une voyelle

mysql>  SELECT * FROM tutorials_inf WHERE name REGEXP '^[aeiou]';