Dernier tutorie...login
Dernier tutoriel manuel MySQL
auteur:php.cn  temps de mise à jour:2022-04-15 14:04:12

Expression régulière MySQL


Expression régulière MySQL

Dans le chapitre précédent, nous avons appris que MySQL peut transmettre 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 la correspondance d'expressions régulières.

Si vous connaissez PHP ou Perl, c'est très simple, car la correspondance des expressions régulières de MySQL est similaire à celles de ces scripts.

Les modèles réguliers du tableau ci-dessous peuvent être appliqués à l'opérateur REGEXP.

模式描述
^匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 'n' 或 'r' 之后的位置。
$匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 'n' 或 'r' 之前的位置。
.匹配除 "n" 之外的任何单个字符。要匹配包括 'n' 在内的任何字符,请使用象 '[.n]' 的模式。
[...]字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
[^...]负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。
p1|p2|p3匹配 p1 或 p2 或 p3。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。
*匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
+匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
{n}n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,m}m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。

Exemple

Après avoir compris les exigences des expressions régulières ci-dessus, nous pouvons écrire des instructions SQL avec des expressions régulières selon nos propres besoins. Ci-dessous, nous listerons quelques petits exemples (nom de la table : person_tbl) pour approfondir notre compréhension :

Trouver toutes les données commençant par 'st' dans le champ du nom :

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';
trouve tout données se terminant par 'ok' dans le champ du nom :
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';
trouve toutes les données contenant la chaîne 'mar' dans le champ du nom :
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';
trouve toutes les données dans le champ de nom qui commencent par une voyelle et se terminent par la chaîne « ok » :
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';

Recommandations de didacticiels vidéo connexes :


Site Web PHP chinois