Oracle REGEXP_LIKE Examples
Regular expressions are patterns used to match character combinations in strings. Az Oracle 10g bemutatta a reguláris kifejezések támogatását különböző funkciók használatával. Ez a bejegyzés az Oracle REGEXP_LIKE függvényre összpontosít, és elmagyarázza, hogyan kell használni.
leírás
Az Oracle REGEXP_LIKE egy reguláris kifejezés-illesztés végrehajtására szolgál (nem pedig egy egyszerű mintaillesztésre, amelyet hasonló végez).
syntax
REGEXP_LIKE ( string expression, pattern )
- string expression – the string expression.
- pattern-a reguláris kifejezés megfelelő minta
- match paraméter-lehetővé teszi, hogy módosítsa az alapértelmezett megfelelő viselkedését az Oracle REGEXP_LIKE funkció(például változtatni a keresést eset érzékeny eset érzéketlen).
Basic Oracle REGEXP_LIKE Examples
Kezdjük azzal, hogy létrehozunk egy nevű táblázatot, amelynek értékei alapján a következő Oracle REGEXP_LIKE példák különböző reguláris kifejezés-kereséseket hajtanak végre.
CREATE TABLE namesASSELECT last_name AS NAMEFROM hr.employeesORDER BY salary ;
a következő Oracle REGEXP_LIKE példa a ” z ” betűt tartalmazó összes nevet lekéri. Ez az Oracle SELECT utasítás valójában nem korlátozza a betűk számát A ” z “betű előtt vagy után (tetszőleges számú karakter megengedett), de megköveteli, hogy a szó tartalmazza a” z ” betűt.
SELECT *FROM namesWHERE regexp_like (name , 'z') ;NAME-------------------------LorentzGietzOzer
a következő Oracle REGEXP_LIKE példa minden olyan nevet lekér, amely a ” be ” betűszekvenciát tartalmazza. Ez az Oracle SELECT utasítás ismét nem korlátozza a betűk számát A ” be “betűsor előtt vagy után (tetszőleges számú karakter megengedett), de megköveteli, hogy a szó tartalmazza a” be ” betűszekvenciát.
SELECT *FROM namesWHERE regexp_like (name , 'be') ;NAME---------------------------AbelGreenberg
A pipe (|) operátor segítségével
A Pipe operátor (|) alternatív egyezések megadására szolgál. A következő Oracle REGEXP_LIKE példában a pipe operátort (|) használnánk annak érdekében, hogy visszaszerezzük az összes olyan nevet, amely a ” be “vagy” ae ” betűszekvenciát tartalmazza. Ez az Oracle SELECT utasítás valójában nem korlátozza a betűk számát A ” be “vagy” ae ” betűsor előtt vagy után(tetszőleges számú karakter megengedett), de megköveteli, hogy a szó tartalmazza ezeket a szekvenciákat.
SELECT *FROM namesWHERE regexp_like (name , 'be|ae') ;NAME-------------------------BaerAbelRaphaelyGreenberg
A ” C ” betű megadásával (a REGEXP_LIKE funkció harmadik érveként) esetérzékeny keresést végezhetünk (az alapértelmezett az Oracle-ben).
SELECT *FROM namesWHERE regexp_like (name , 'be|ae' , 'c' ) ;NAME-------------------------BaerAbelRaphaelyGreenberg
és az ” i ” betű megadásával (a REGEXP_LIKE függvény harmadik argumentumaként) eseti érzéketlen keresést végezhetünk.
SELECT *FROM namesWHERE regexp_like (name , 'be|ae' , 'i' ) ;NAME-------------------------BellBernsteinBaerAbelRaphaelyGreenberg
Használja a Hiányjel(^) üzemeltető
használhatjuk a hiányjel (^) kezelő számára, hogy jelezze a kezdet-a-vonal karaktert, ebben a REGEXP_LIKE példát szeretnénk letölteni a neveket, hogy indítsa el a levelet-sorozat ‘lenni’ vagy ‘ba’ (az érzéketlen keresés)
SELECT *FROM namesWHERE regexp_like (name , '^be|^ba' , 'i' ) ;NAME-------------------------BaidaBellBandaBatesBernsteinBaer
Használja a Dollár ($) üzemeltető
használhatjuk a dollár ($) kezelő számára, hogy jelezze egy end-of-line karaktert, ebben a REGEXP_LIKE példát szeretnénk letölteni nevek végén a levél-sorozat ‘es’ vagy ‘er’ (az érzéketlen keresés).
SELECT *FROM namesWHERE regexp_like (name , 'es$|er$' , 'i' ) ;NAME-------------------------PhiltankerColmenaresJonesGatesDaviesNayerStilesDellingerBatesBaer
szögletes zárójelek használata
A szögletes zárójelekkel megadhatunk egy megfelelő listát, amelynek meg kell egyeznie a benne szereplő kifejezések bármelyikével. A következő Oracle REGEXP_LIKE példa minden olyan nevet lekér, amely ” j “vagy” z ” betűket tartalmaz.
SELECT *FROM namesWHERE regexp_like (name , '') ;NAME-------------------------RajsLorentzGietzOzerErrazuriz
Ez a REGEXP_LIKE példa minden olyan nevet lekér, amely a ” b “vagy” z “vagy” E “betűket tartalmazza (case sensitive search)
SELECT * FROM names WHERE regexp_like (name , '') ;NAME-------------------------TobiasCabrioEverettLorentzPataballaErnstCambraultGietzMcEwenCambrault
ezután módosítjuk az utolsó lekérdezésünket, és érzéketlen kereséssé tesszük :
SELECT *FROM namesWHERE regexp_like (name , '' , 'i') ;NAME-------------------------PhiltankerZacharyMarkleGeePerkinsColmenaresPatelOConnellMikkilineniTobiasSeo
Ez az Oracle REGEXP_LIKE példa letölteni a nevek, amelyek tartalmazzák a leveleket, az “a”, ” b “vagy ” c”:
SELECT *FROM namesWHERE regexp_like (name , '') ;NAME-------------------------PhiltankerMarkleLandryColmenaresPatelVargasSullivanMarlowGrantMatos
helyett, amelyben meghatározza a betű az “a”, ” b “illetve” c ” külön-külön, megadhatunk egy tartomány :
SELECT *FROM namesWHERE regexp_like (name , '') ;NAME-------------------------PhiltankerMarkleLandryColmenaresPatelVargasSullivanMarlowGrantMatos
A következő Oracle REGEP_LIKE példa letölteni nevek, amelyek egy levelet, hogy a tartomány, a “d”, illetve “g”, majd az ” a ” betű.
SELECT *FROM namesWHERE regexp_like (name , 'a') ;NAME-------------------------VargasBaidaFleaurBanda
) Operátor
az időszak (.) az operátor A null kivételével bármely karakterhez illeszkedik, a következő Oracle REGEXP_LIKE példa minden olyan nevet lekér, amely ” b ” és ” g “betűtartományban tartalmaz egy betűt, amelyet bármely karakter követ, majd az” a ” betű követ.
SELECT *FROM namesWHERE regexp_like (name , '.') ;NAME-------------------------ColmenaresTobiasMcCainSarchandSewallCambraultSciarraCambrault
a periódus operátort több karakter megjelenítésére használhatjuk, a következő Oracle REGEXP_LIKE példa minden olyan nevet lekér, amely ” b ” és ” g “betűtartományban tartalmaz egy betűt, amelyet bármelyik két karakter követ, majd az” a ” betű.
SELECT *FROM namesWHERE regexp_like (name , '..') ;NAME-------------------------De HaanKochhar
A göndör zárójelek segítségével
a göndör zárójeleket az események pontos számának megadására használják, például az összes olyan név megjelenítésére, amely kettős ” o ” betűket tartalmaz.
SELECT *FROM namesWHERE regexp_like (name , '{2}') ;NAME-------------------------KhooBloom