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