MySQL - Regexps
Widziałeś dopasowywanie wzorców MySQL z LIKE ...%. MySQL obsługuje inny typ operacji dopasowywania wzorców w oparciu o wyrażenia regularne i rozszerzenieREGEXPoperator. Jeśli znasz PHP lub PERL, to jest to bardzo łatwe do zrozumienia, ponieważ to dopasowanie jest takie samo, jak w przypadku skryptów dla wyrażeń regularnych.
Poniżej znajduje się tabela wzorców, których można używać razem z REGEXP operator.
Wzór | Jaki wzór pasuje |
---|---|
^ | Początek ciągu |
$ | Koniec łańcucha |
. | Dowolny pojedynczy znak |
[…] | Dowolny znak wymieniony w nawiasach kwadratowych |
[^ ...] | Dowolny znak niewymieniony w nawiasach kwadratowych |
p1 | p2 | p3 | Alternacja; pasuje do dowolnego ze wzorów p1, p2 lub p3 |
* | Zero lub więcej wystąpień poprzedniego elementu |
+ | Co najmniej jedno wystąpienie poprzedniego elementu |
{n} | n wystąpień elementu poprzedzającego |
{m, n} | m do n wystąpień elementu poprzedzającego |
Przykłady
Teraz w oparciu o powyższą tabelę możesz ustawić różne typy zapytań SQL, aby spełnić Twoje wymagania. Tutaj wymieniam kilka dla twojego zrozumienia.
Rozważmy, że mamy tabelę o nazwie person_tbl i ma pole zwane name -
Zapytanie, aby znaleźć wszystkie nazwy zaczynające się od 'st' -
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';
Zapytanie, aby znaleźć wszystkie nazwy kończące się na 'ok' -
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';
Zapytanie, aby znaleźć wszystkie nazwy, które zawierają 'mar' -
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';
Zapytanie, aby znaleźć wszystkie imiona zaczynające się od samogłoski, a kończące się na 'ok' -
mysql> SELECT FirstName FROM intque.person_tbl WHERE FirstName REGEXP '^[aeiou].*ok$';