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