Hoe pas MySQL-databasis gereelde uitdrukkings ooreen? MySQL regexp soos gebruik

Hoe om gereelde uitdrukkingspassing in 'n MySQL-databasis uit te voer? Hoe om MySQL regexp soos te gebruik?

MySQL gereelde uitdrukkings

In vorige hoofstukke het ons geleer dat MySQL LIKE …% vir vae ooreenstemming kan gebruik.

MySQL ondersteun ook die passing van ander gereelde uitdrukkings.Die REGEXP-operateur word in MySQL vir gewone uitdrukking-passing gebruik.

As jy PHP of Perl ken, is dit redelik eenvoudig, aangesien MySQL se gereelde uitdrukking-passing soortgelyk is aan dié van hierdie skrifte.

Die gereelde patrone in die volgende tabel kan op die REGEXP-operateur toegepas word.

afbeskrywing
^Pas by die begin van die invoerstring.^ pas ook by die posisie na '\n' of '\r' as die Multiline-eienskap van die RegExp-objek gestel is.
$Pas by die einde van die invoerstring.As die Multiline-eienskap van die RegExp-objek gestel is, pas $ ook by die posisie voor '\n' of '\r'.
.Pas by enige enkele karakter behalwe "\n".Om enige karakter te pas, insluitend '\n', gebruik 'n patroon soos '[.\n]'.
[...]versameling karakters.Pas by enige een van die vervatte karakters.Byvoorbeeld, '[abc]' sal ooreenstem met "plai'a' in n".
[^...]Negatiewe karakterstel.Pas by enige karakter wat nie vervat is nie.Byvoorbeeld, '[^abc]' sal ooreenstem met 'p' in "plain".
p1|p2|p3Pas by p1 of p2 of p3.Byvoorbeeld, 'z|kos' sal óf "z" óf "kos" pas. '(z|f)ood' pas by "zood" of "kos".
*Pas die voorafgaande subuitdrukking nul of meer keer.Byvoorbeeld, zo* sal ooreenstem met "z" sowel as "dieretuin". * is gelykstaande aan {0,}.
+Pas een of meer keer by die voorafgaande subuitdrukking.Byvoorbeeld, 'zo+' sal ooreenstem met "zo" en "dieretuin", maar nie "z" nie. + is gelykstaande aan {1,}.
{n}n is 'n nie-negatiewe heelgetal.Pas presies n keer.Byvoorbeeld, 'o{2}' sal nie ooreenstem met die 'o' in "Bob" nie, maar sal ooreenstem met beide o's in "kos".
{n,m}Beide m en n is nie-negatiewe heelgetalle, waar n <= m.Pas ten minste n keer en hoogstens m keer ooreen.

Instansie

Nadat ons die bogenoemde gereelde vereistes verstaan ​​het, kan ons SQL-stellings met gereelde uitdrukkings skryf volgens ons eie vereistes.Hieronder sal ons 'n paar klein voorbeelde lys (tabelnaam: person_tbl ) om ons begrip te verdiep:

Vind alle data wat met 'st' in die naamveld begin:

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

Vind alle data wat eindig met 'ok' in die naamveld:

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

Vind alle data wat die 'mar'-string in die naamveld bevat:

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

Vind alle data in die naamveld wat met 'n vokaalkarakter begin of met die string 'ok' eindig:

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

发表 评论

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

Scroll na bo