Comment les expressions régulières de la base de données MySQL correspondent-elles ? MySQL regexp comme utilisation

Comment effectuer une correspondance d'expressions régulières dans une base de données MySQL ? Comment utiliser les expressions régulières MySQL ?

Expressions régulières MySQL

Dans les chapitres précédents, nous avons appris que MySQL peut utiliser LIKE …% pour la correspondance approximative.

MySQL prend également en charge la correspondance d'autres expressions régulières. L'opérateur REGEXP est utilisé dans MySQL pour la correspondance des expressions régulières.

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

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

ModeDescription
^Correspond au début de la chaîne d'entrée.^ correspond également à la position après '\n' ou '\r' si la propriété Multiline de l'objet RegExp est définie.
$Correspond à la fin de la chaîne d'entrée.Si la propriété Multiline de l'objet RegExp est définie, $ correspond également à la position avant '\n' ou '\r'.
.Correspond à n'importe quel caractère unique sauf "\n".Pour faire correspondre n'importe quel caractère, y compris '\n', utilisez un modèle comme '[.\n]'.
[...]collection de personnages.Correspond à l'un des caractères contenus.Par exemple, '[abc]' correspondrait à "plai'a' dans n".
[^…]Jeu de caractères négatif.Correspond à tout caractère non contenu.Par exemple, '[^abc]' correspondrait à 'p' dans "plain".
p1|p2|p3Correspond à p1 ou p2 ou p3.Par exemple, 'z|food' correspondrait à "z" ou "food". '(z|f)ood' correspond à "zood" ou "nourriture".
*Correspond à la sous-expression précédente zéro ou plusieurs fois.Par exemple, zo* correspondrait à "z" ainsi qu'à "zoo". * est équivalent à {0,}.
+Correspond à la sous-expression précédente une ou plusieurs fois.Par exemple, 'zo+' correspondrait à "zo" et "zoo", mais pas à "z". + est équivalent à {1,}.
{n}n est un entier non négatif.Match déterminé n fois.Par exemple, 'o{2}' ne correspondrait pas au 'o' dans "Bob", mais correspondrait aux deux o dans "food".
{n,m}m et n sont tous deux des entiers non négatifs, où n <= m.Correspond au moins n fois et au plus m fois.

Exemple

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

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

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';

Recherchez toutes les données qui se terminent par "ok" dans le champ de nom :

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';

Trouvez toutes les données contenant la chaîne 'mar' dans le champ de nom :

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';

Trouvez toutes les données dans le champ de nom qui commencent par une voyelle ou se terminent par la chaîne « ok » :

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

Remonter en haut