Latest web development tutorials

MySQL Wyrażenia regularne

W poprzedniej części poznaliśmy przez MySQL LIKE ...% dla rozmytego dopasowywania.

MySQL obsługuje również inne dopasowania wyrażeń regularnych, MySQL RegExp operatora użyć dopasowywania wyrażeń regularnych.

Jeśli znasz PHP lub Perl, to operacja jest bardzo prosta, ponieważ MySQL wyrażenie regularne pasujące podobne do tych skryptów.

W poniższej tabeli tryb normalny może być stosowany w operatorze REGEXP.

tryb opis
^ Dopasowuje początek łańcucha. Jeśli ustawisz właściwość wielowierszowego obiektu RegExp, ^ także odpowiedzią '\ n' pozycji lub '\ r' po.
$ Dopasuj końcówkę wejściową łańcucha. Jeśli przed ustawieniem multiline Właściwość obiektu RegExp, a także dopasowanie pozycji $ '\ n' lub '\ r'.
, Dopasowuje dowolny pojedynczy znak z wyjątkiem "\ n" jest. Aby sprostać tym '\ n', w tym wszelkie znaki, takie jak wykorzystanie "[. \ N]" tryb.
[...] Zestaw znaków. Dopasowuje dowolny znak włączone. Na przykład "[abc] 'pasuje do" zwykłego "w" A ".
[^ ...] Ujemny zestaw znaków. Dopasowuje dowolny znak, który nie jest dołączony. Na przykład "[^ abc]" meczów "zwykłego" w "P".
p1 | p2 | p3 Mecz p1, p2, p3 lub. Na przykład "Z | food" może się równać z "z" lub "jedzenie". "(Z | f) ood" dopasuje "zood" lub "jedzenie".
* Mecze powyższe podwyrażenie zero lub więcej razy. Na przykład, zo * może się równać z "Z" i "Zoo". * Ekwiwalent dla {0}.
+ Mecze powyższe podwyrażenie jeden lub więcej razy. Na przykład "zo +" dopasuje "ZO" i "Zoo", ale nie może się równać "Z". + Jest równoważna {1}.
{N} n jest nieujemną liczbą całkowitą. Dopasowanie określone n razy. Na przykład "o {2} 'nie pasuje do" Bob "w" o ", ale może się równać z" żywności "w dwa o.
{N, m} m i n oznaczają nieujemne liczby całkowite, w których n <= m. Dopasowanie co najmniej n razy i dopasować do m razy.

Przykłady

Gdy wiesz, bardziej regularne potrzeb, możemy być bardziej do własnych potrzeb napisać instrukcję SQL za pomocą wyrażenia regularnego. Poniżej podajemy kilka drobnych przykładów (Nazwa tabeli: person_tbl), aby pogłębić naszą wiedzę:

Znajdź wszystkie nazwy pola danych do początku 'st' z:

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

Znajdź wszystkie nazwy pola danych "OK" na zakończenie:

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

Znajdź pole nazwa zawiera "MAR" ciągi wszystkie dane:

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

Znajdź pole nazwy, aby rozpocząć z samogłosek i 'OK' końcu łańcucha wszystkich danych:

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