English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dans les chapitres précédents, nous avons appris que MySQL peut LIKE ...% pour effectuer une correspondance floue.
MySQL prend également en charge d'autres correspondances d'expressions régulières, MySQL utilise l'opérateur REGEXP pour effectuer la correspondance des expressions régulières.
Si vous connaissez PHP ou Perl, l'utilisation est très simple, car le mécanisme de correspondance des expressions régulières de MySQL est similaire à ces scripts.
Les modèles régulaires du tableau suivant peuvent être appliqués à l'opérateur REGEXP.
Modèle | Description |
---|---|
^ | Correspond au début de la chaîne d'entrée. Si l'attribut Multiline de l'objet RegExp est défini, ^ correspond également à la position après '\n' ou '\r'. |
$ | Correspond à la fin de la chaîne d'entrée. Si l'attribut Multiline de l'objet RegExp est défini, $ correspond également à la position avant '\n' ou '\r'. |
. | Correspond à n'importe quel caractère sauf '\n'. Pour correspondre à n'importe quel caractère incluant '\n', utilisez un modèle comme '[.\n}'. |
[...] | Ensemble de caractères. Correspond à n'importe quel caractère inclus. Par exemple, '[abc]' peut correspondre à l' 'a' dans 'plain'. |
[^...] | Ensemble de caractères négatifs. Correspond à n'importe quel caractère non inclus. Par exemple, '[^abc]' peut correspondre à l' 'p' dans 'plain'. |
p1|p2|p3 | Correspond à p1 ou p2 ou p3。Par exemple, 'z|food' peut correspondre à 'z' ou 'food'. '(z|f)ood' correspond à 'zood' ou 'food'. |
* | Correspond à l'expression sous-jacente zéro fois ou plusieurs fois. Par exemple, zo* Peut correspondre à 'z' et 'zoo'.* Équivaut à {0,}。 |
+ | Correspond à l'expression sous-jacente une fois ou plusieurs fois. Par exemple, 'zo+Le ' peut correspondre à 'zo' et 'zoo', mais ne peut pas correspondre à 'z'.+ Équivaut à {1,}。 |
{n} | n est un entier non négatif. Correspond à n fois. Par exemple, 'o{2Le '}' ne peut correspondre à l' 'o' dans 'Bob', mais il peut correspondre aux deux 'o' dans 'food'. |
{n,m} | m 和 n 均为非负整数,其中n <= m。最少匹配 n 次,最多匹配 m 次。 |
了解以上的正则需求后,我们就可以根据自己的需求来编写带有正则表达式的SQL语句。以下我们将列出几个小示例(表名:person_tbl )来加深我们的理解:
查找以'st'为开头的所有数据:name字段
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';
查找以'ok'为结尾的所有数据:name字段
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';
查找包含'mar'字符串的所有数据:name字段
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';
查找以元音字符开头或以'ok'字符串结尾的所有数据:name字段
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';