W MySQL funkcja REGEXP_LIKE()
funkcja służy do określenia, czy ciąg znaków pasuje do wyrażenia regularnego.
Funkcja zwraca 1
jeśli ciąg pasuje do podanego wyrażenia regularnego i 0
jeśli nie.
Składnia
Składnia wygląda tak:
REGEXP_LIKE(expr, pat[, match_type])
Gdzie expr
jest ciągiem wejściowym i pat
jest wyrażeniem regularnym, względem którego testujesz ciąg.
Opcjonalny match_type
argument umożliwia doprecyzowanie wyrażenia regularnego. Na przykład możesz użyć match_type
określić dopasowanie z uwzględnieniem wielkości liter, czy nie.
Przykład 1 – Podstawowe użycie
Oto podstawowy przykład:
SELECT REGEXP_LIKE('Cat', '.*') Result;
Wynik:
+--------+ | Result | +--------+ | 1 | +--------+
W tym przypadku nasze wyrażenie regularne określa dowolny znak w dowolnej sekwencji, więc oczywiście otrzymujemy dopasowanie. Funkcja zwraca 1
aby wskazać dopasowanie.
Przykład 2 – Brak dopasowania
Oto przykład, w którym ciąg wejściowy nie pasuje do wyrażenia regularnego:
SELECT REGEXP_LIKE('Cat', 'b+') Result;
Wynik:
+--------+ | Result | +--------+ | 0 | +--------+
W tym przypadku nasze wyrażenie regularne określa, że powinien istnieć jeden lub więcej b
znaki w dowolnej kolejności. Nasz ciąg wejściowy nie zawiera tego znaku, więc 0
jest zwracany.
Przykład 3 – Dopasuj początek ciągu
Oto przykład, w którym wyrażenie regularne określa, że ciąg musi zaczynać się od określonych znaków:
SELECT REGEXP_LIKE('Cat', '^Ca') Result;
Wynik:
+--------+ | Result | +--------+ | 1 | +--------+
A oto, co się stanie, jeśli nie ma dopasowania:
SELECT REGEXP_LIKE('Cat', '^Da') Result;
Wynik:
+--------+ | Result | +--------+ | 0 | +--------+
Przykład 4 – Zapytanie do bazy danych
Ta funkcja może być używana w WHERE
klauzula zapytań do bazy danych, aby zwrócić tylko te wiersze, które zawierają wzorzec:
SELECT AlbumId, AlbumName FROM Albums WHERE REGEXP_LIKE(AlbumName, '^Power');
Wynik:
+---------+------------+ | AlbumId | AlbumName | +---------+------------+ | 1 | Powerslave | | 2 | Powerage | +---------+------------+
Oto pełna tabela:
SELECT AlbumId, AlbumName FROM Albums;
Wynik:
+---------+--------------------------+ | AlbumId | AlbumName | +---------+--------------------------+ | 1 | Powerslave | | 2 | Powerage | | 3 | Singing Down the Lane | | 4 | Ziltoid the Omniscient | | 5 | Casualties of Cool | | 6 | Epicloud | | 7 | Somewhere in Time | | 8 | Piece of Mind | | 9 | Killers | | 10 | No Prayer for the Dying | | 11 | No Sound Without Silence | | 12 | Big Swing Face | | 13 | Blue Night | | 14 | Eternity | | 15 | Scandinavia | | 16 | Long Lost Suitcase | | 17 | Praise and Blame | | 18 | Along Came Jones | | 19 | All Night Wrong | | 20 | The Sixteen Men of Tain | +---------+--------------------------+
Przykład 5 – match_type
Argument
Możesz podać dodatkowy argument, aby określić typ dopasowania. Pozwala to określić takie rzeczy, jak rozróżnianie wielkości liter w dopasowaniu, uwzględnienie terminatorów linii itp.
Oto przykład określenia dopasowania z rozróżnianiem wielkości liter i dopasowania bez rozróżniania wielkości liter:
SELECT REGEXP_LIKE('Cat', '^ca', 'c') 'Case-Sensitive', REGEXP_LIKE('Cat', '^ca', 'i') 'Case-Insensitive';
Wynik:
+----------------+------------------+ | Case-Sensitive | Case-Insensitive | +----------------+------------------+ | 0 | 1 | +----------------+------------------+
match_type
argument może zawierać następujące znaki:
c
- Rozróżnianie wielkości liter.
i
- Dopasowywanie bez rozróżniania wielkości liter.
m
- Tryb wielowierszowy. Rozpoznaj terminatory wiersza w ciągu. Domyślnym zachowaniem jest dopasowywanie terminatorów linii tylko na początku i na końcu wyrażenia łańcuchowego.
n
.
znak pasuje do terminatorów linii. Wartość domyślna to.
dopasowanie, aby zatrzymać się na końcu linii.u
- Zakończenia linii tylko dla Uniksa. Tylko znak nowej linii jest rozpoznawany jako linia kończąca się
.
,^
i$
operatory dopasowania.
Więcej przykładów
Możesz zobaczyć więcej przykładów podstawowych wyrażeń regularnych w MySQL REGEXP Przykłady. REGEXP
jest synonimem REGEXP_LIKE()
, więc możesz używać przykładów zamiennie.
Zobacz także składnię wyrażeń regularnych w dokumentacji MySQL.