Oracle REGEXP_LIKE Examples
wyrażenia regularne są wzorcami używanymi do dopasowywania kombinacji znaków w łańcuchach. Oracle 10g wprowadził obsługę wyrażeń regularnych wykorzystujących różne funkcje. Ten post koncentruje się na funkcji Oracle REGEXP_LIKE i wyjaśnia, jak z niej korzystać.
opis
Regexp_like Oracle jest używany do wykonywania dopasowania wyrażenia regularnego (zamiast prostego dopasowania wzorca wykonywanego przez LIKE).
składnia
REGEXP_LIKE ( string expression, pattern )
- string expression – wyrażenie łańcuchowe.
- pattern – wzorzec dopasowania wyrażenia regularnego
- parametr match – pozwala zmienić domyślne zachowanie dopasowania funkcji REGEXP_LIKE Oracle (na przykład, zmienić wyszukiwanie z rozróżniania wielkości liter na niewrażliwe na wielkość liter).
podstawowe przykłady REGEXP_LIKE Oracle
zaczniemy od utworzenia tabeli nazw, na podstawie jej wartości, poniższe przykłady REGEXP_LIKE Oracle wykonają Różne wyszukiwania wyrażeń regularnych.
CREATE TABLE namesASSELECT last_name AS NAMEFROM hr.employeesORDER BY salary ;
poniższy przykład REGEXP_LIKE Oracle pobierze wszystkie nazwy zawierające literę 'z’. To polecenie Oracle SELECT w rzeczywistości nie nakłada dolnego ani górnego limitu na liczbę liter przed lub po literze ” z „(dozwolona jest dowolna liczba znaków), ale wymaga, aby słowo zawierało literę „z”.
SELECT *FROM namesWHERE regexp_like (name , 'z') ;NAME-------------------------LorentzGietzOzer
następny przykład REGEXP_LIKE Oracle pobierze wszystkie nazwy zawierające sekwencję liter 'be’. Ponownie, to Oświadczenie Oracle SELECT w rzeczywistości nie nakłada dolnego ani górnego limitu na liczbę liter przed lub po sekwencji liter „be” (dozwolona jest dowolna liczba znaków), ale wymaga, aby słowo zawierało sekwencję liter „be”.
SELECT *FROM namesWHERE regexp_like (name , 'be') ;NAME---------------------------AbelGreenberg
korzystanie z operatora rury (/)
operator rury ( / ) jest używany do określania alternatywnych dopasowań. W następnym przykładzie Oracle REGEXP_LIKE użyjemy operatora potoku ( / ) w celu pobrania wszystkich nazw zawierających sekwencję liter 'be’ lub 'AE’. To Oświadczenie Oracle SELECT w rzeczywistości nie nakłada dolnego ani górnego limitu na liczbę liter przed lub po sekwencji liter ” be ” lub ” AE ” (dozwolona jest dowolna liczba znaków), ale wymaga, aby słowo zawierało te sekwencje.
SELECT *FROM namesWHERE regexp_like (name , 'be|ae') ;NAME-------------------------BaerAbelRaphaelyGreenberg
poprzez podanie litery 'c’ (jako Trzeciego argumentu funkcji REGEXP_LIKE) możemy dokonać wyszukiwania uwzględniającego wielkość liter (domyślnie w Oracle).
SELECT *FROM namesWHERE regexp_like (name , 'be|ae' , 'c' ) ;NAME-------------------------BaerAbelRaphaelyGreenberg
i przez podanie litery 'i’ (jako Trzeciego argumentu funkcji REGEXP_LIKE) możemy dokonać wyszukiwania bez rozróżniania wielkości liter.
SELECT *FROM namesWHERE regexp_like (name , 'be|ae' , 'i' ) ;NAME-------------------------BellBernsteinBaerAbelRaphaelyGreenberg
używając operatora Caret (^)
możemy użyć operatora caret ( ^ ), aby wskazać znak na początku linii, w tym przykładzie REGEXP_LIKE odzyskamy wszystkie Nazwy zaczynające się od sekwencji liter 'be’ lub 'ba’ (wyszukiwanie bez rozróżniania wielkości liter)
SELECT *FROM namesWHERE regexp_like (name , '^be|^ba' , 'i' ) ;NAME-------------------------BaidaBellBandaBatesBernsteinBaer
używając operatora Dolar ( $ )
możemy użyć operatora Dolar ( $ ), aby wskazać znak końca wiersza, w tym przykładzie regexp_like pobierzemy wszystkie nazwy, które kończą się sekwencją liter 'es’ lub 'er’ (wyszukiwanie bez rozróżniania wielkości liter).
SELECT *FROM namesWHERE regexp_like (name , 'es$|er$' , 'i' ) ;NAME-------------------------PhiltankerColmenaresJonesGatesDaviesNayerStilesDellingerBatesBaer
używając nawiasów kwadratowych
możemy użyć nawiasów kwadratowych, aby określić pasującą listę, która powinna pasować do dowolnego z wyrażeń w niej przedstawionych. Następny przykład Oracle REGEXP_LIKE pobierze wszystkie nazwy zawierające litery ” j ” lub „z”.
SELECT *FROM namesWHERE regexp_like (name , '') ;NAME-------------------------RajsLorentzGietzOzerErrazuriz
Ten przykład REGEXP_LIKE pobierze wszystkie nazwy zawierające litery ’ b 'lub’ z 'lub’ e ’ (wyszukiwanie uwzględniające wielkość liter)
SELECT * FROM names WHERE regexp_like (name , '') ;NAME-------------------------TobiasCabrioEverettLorentzPataballaErnstCambraultGietzMcEwenCambrault
następnie zmodyfikujemy nasze ostatnie zapytanie i sprawimy, że będzie ono niewrażliwe na wielkość liter :
SELECT *FROM namesWHERE regexp_like (name , '' , 'i') ;NAME-------------------------PhiltankerZacharyMarkleGeePerkinsColmenaresPatelOConnellMikkilineniTobiasSeo
Ten przykład REGEXP_LIKE Oracle pobierze wszystkie nazwy zawierające litery 'A’, 'b’ lub 'c’ :
SELECT *FROM namesWHERE regexp_like (name , '') ;NAME-------------------------PhiltankerMarkleLandryColmenaresPatelVargasSullivanMarlowGrantMatos
i zamiast określać litery 'A’, 'b’ I 'c’ osobno, możemy określić zakres :
SELECT *FROM namesWHERE regexp_like (name , '') ;NAME-------------------------PhiltankerMarkleLandryColmenaresPatelVargasSullivanMarlowGrantMatos
następny przykład Oracle regep_like pobierze wszystkie nazwy zawierające literę z zakresu 'D’ i 'G’, po której następuje litera 'A’.
SELECT *FROM namesWHERE regexp_like (name , 'a') ;NAME-------------------------VargasBaidaFleaurBanda
używając kropki (.) Operator
okres (.) Operator pasuje do dowolnego znaku z wyjątkiem NULL, następny przykład REGEXP_LIKE Oracle pobierze wszystkie nazwy, które zawierają literę z zakresu ” b ” I „g”, po której następuje dowolny znak, po którym następuje litera „a”.
SELECT *FROM namesWHERE regexp_like (name , '.') ;NAME-------------------------ColmenaresTobiasMcCainSarchandSewallCambraultSciarraCambrault
możemy użyć operatora Period do reprezentowania więcej niż jednego znaku, następny przykład REGEXP_LIKE Oracle pobierze wszystkie nazwy, które zawierają literę w zakresie 'b’ I 'g’, po których następują dowolne dwa znaki, a po nich litera 'a’.
SELECT *FROM namesWHERE regexp_like (name , '..') ;NAME-------------------------De HaanKochhar
używanie nawiasów klamrowych
nawiasy klamrowe są używane do określenia dokładnej liczby wystąpień, na przykład wyświetlają wszystkie nazwy zawierające podwójne litery „o”.
SELECT *FROM namesWHERE regexp_like (name , '{2}') ;NAME-------------------------KhooBloom