Articles

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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *