Articles

Oracle REGEXP_LIKE Examples

regulární výrazy jsou vzory používané pro porovnávání kombinací znaků v řetězcích. Oracle 10g představil podporu pro regulární výrazy používající různé funkce. Tento příspěvek se zaměřuje na funkci Oracle REGEXP_LIKE a vysvětluje, jak ji používat.

Popis

Oracle REGEXP_LIKE je používán k provádění regulárních výrazů (spíše než jednoduché porovnávání provádí PODOBNĚ).

syntax

REGEXP_LIKE ( string expression, pattern )
  • string expression – string expression.
  • vzor – regulární výraz odpovídající vzor
  • zápas parametr – umožňuje změnit výchozí odpovídající chování Oracle funkci REGEXP_LIKE (například změnit vyhledávání z případu citlivé na malá a velká písmena).

základní příklady Oracle REGEXP_LIKE

začneme vytvořením tabulky s názvem jména, na základě jejích hodnot budou následující příklady Oracle REGEXP_LIKE provádět různé vyhledávání regulárních výrazů.

CREATE TABLE namesASSELECT last_name AS NAMEFROM hr.employeesORDER BY salary ;

následující příklad Oracle REGEXP_LIKE načte všechna jména, která obsahují písmeno „z“. To Oracle SELECT vlastně staví ne spodní nebo horní limit na počet písmen před nebo po písmeno “ z „(libovolný počet znaků), ale vyžaduje to slovo obsahují písmeno „z“.

SELECT *FROM namesWHERE regexp_like (name , 'z') ;NAME-------------------------LorentzGietzOzer

následující příklad Oracle REGEXP_LIKE načte všechna jména, která obsahují posloupnost písmen „be“. Znovu, toto Oracle SELECT vlastně staví ne spodní nebo horní limit na počet písmen před nebo po písmeno-pořadí “ být „(libovolný počet znaků), ale vyžaduje to slovo obsahují písmeno-pořadí „být“.

SELECT *FROM namesWHERE regexp_like (name , 'be') ;NAME---------------------------AbelGreenberg

pomocí operátoru pipe ( | )

operátor Pipe ( | ) se používá k určení alternativních shod. V dalším příkladu Oracle REGEXP_LIKE bychom použili operátor potrubí ( | ), abychom získali všechna jména, která obsahují posloupnost písmen “ be „nebo “ ae“. To Oracle SELECT vlastně staví ne spodní nebo horní limit na počet písmen před nebo po písmeno-pořadí “ být „nebo“ ae “ (libovolný počet znaků), ale vyžaduje to slovo obsahují tyto sekvence.

SELECT *FROM namesWHERE regexp_like (name , 'be|ae') ;NAME-------------------------BaerAbelRaphaelyGreenberg

zadáním písmeno “ c “ (jako třetí argument funkce REGEXP_LIKE) můžeme se velká a malá písmena vyhledávání (default v Oracle).

SELECT *FROM namesWHERE regexp_like (name , 'be|ae' , 'c' ) ;NAME-------------------------BaerAbelRaphaelyGreenberg

A zadáním písmeno “ i “ (jako třetí argument funkce REGEXP_LIKE) můžeme se malá a velká písmena vyhledávání.

SELECT *FROM namesWHERE regexp_like (name , 'be|ae' , 'i' ) ;NAME-------------------------BellBernsteinBaerAbelRaphaelyGreenberg

Pomocí Stříšky(^) operátor

můžeme použít stříška (^) operátor k označení začátku řádku znak, v tomto REGEXP_LIKE příklad bychom načíst všechny názvy, které začínají písmenem-sekvence „být“, nebo “ ba “ (malá a velká písmena vyhledávání)

SELECT *FROM namesWHERE regexp_like (name , '^be|^ba' , 'i' ) ;NAME-------------------------BaidaBellBandaBatesBernsteinBaer

Použití Dolaru ($) provozovatel

můžeme použít dolaru ($) provozovatel k označení konce řádku znak, v tomto REGEXP_LIKE příklad bychom načíst všechny názvy, které končí na písmeno-pořadí “ es „nebo“ er “ (malá a velká písmena vyhledávání).

SELECT *FROM namesWHERE regexp_like (name , 'es$|er$' , 'i' ) ;NAME-------------------------PhiltankerColmenaresJonesGatesDaviesNayerStilesDellingerBatesBaer

Pomocí Hranatých Závorek

můžeme použít Hranatých Závorek zadat odpovídající seznam, který by měl odpovídat některý z výrazů v ní zastoupeny. Další příklad Oracle REGEXP_LIKE načte všechna jména, která obsahují písmena “ j „nebo “ z“.

SELECT *FROM namesWHERE regexp_like (name , '') ;NAME-------------------------RajsLorentzGietzOzerErrazuriz

Tento REGEXP_LIKE příklad by načíst všechny názvy, které obsahují písmena “ b „nebo“ z „nebo“ E “ (case sensitive search)

 SELECT * FROM names WHERE regexp_like (name , '') ;NAME-------------------------TobiasCabrioEverettLorentzPataballaErnstCambraultGietzMcEwenCambrault

Next, budeme upravovat naše poslední dotaz a to malá a velká písmena vyhledávání :

SELECT *FROM namesWHERE regexp_like (name , '' , 'i') ;NAME-------------------------PhiltankerZacharyMarkleGeePerkinsColmenaresPatelOConnellMikkilineniTobiasSeo

Oracle REGEXP_LIKE příklad by načíst všechny názvy, které obsahují písmena „a“, “ b „nebo “ c“:

SELECT *FROM namesWHERE regexp_like (name , '') ;NAME-------------------------PhiltankerMarkleLandryColmenaresPatelVargasSullivanMarlowGrantMatos

A místo toho, uvedením písmena „a“, “ b “ a „c“, zvlášť, můžeme určit rozsah :

SELECT *FROM namesWHERE regexp_like (name , '') ;NAME-------------------------PhiltankerMarkleLandryColmenaresPatelVargasSullivanMarlowGrantMatos

další Oracle REGEP_LIKE příklad by načíst všechny názvy, které obsahují dopis v rozsahu “ d “ a „g“, za nímž následuje písmeno „a“.

SELECT *FROM namesWHERE regexp_like (name , 'a') ;NAME-------------------------VargasBaidaFleaurBanda

pomocí období (.) Operátor

období (.) operátor odpovídá libovolnému znaku kromě NULL, další příklad Oracle REGEXP_LIKE načte všechna jména, která obsahují písmeno v rozsahu “ b “ A „g“, následované libovolným znakem, následovaným písmenem „a“.

SELECT *FROM namesWHERE regexp_like (name , '.') ;NAME-------------------------ColmenaresTobiasMcCainSarchandSewallCambraultSciarraCambrault

můžeme použít Období Provozovatel představuje více než jeden znak, další Oracle REGEXP_LIKE příklad by načíst všechny názvy, které obsahují dopis v rozsahu “ b “ a „g“, následované dvou znaků, za nímž následuje písmeno „a“.

SELECT *FROM namesWHERE regexp_like (name , '..') ;NAME-------------------------De HaanKochhar 

Pomocí složené závorky

složené závorky se používají k určení přesného počtu výskytů, například zobrazit všechny názvy, které obsahují dvojité “ o “ dopisy.

SELECT *FROM namesWHERE regexp_like (name , '{2}') ;NAME-------------------------KhooBloom

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *