Oracle REGEXP_LIKE Examples
Säännölliset lausekkeet ovat kuvioita, joita käytetään vastaamaan merkkijonojen merkkiyhdistelmiä. Oracle 10g otti käyttöön tuen säännöllisille lausekkeille eri funktioilla. Tämä viesti keskittyy Oracle REGEXP_LIKE funktio, ja selittää, miten sitä käytetään.
kuvaus
Oraakkeliregexp_like-lauseketta käytetään säännöllisen lausekesovituksen suorittamiseen (like: n suorittaman yksinkertaisen kuviosovituksen sijaan).
syntaksi
REGEXP_LIKE ( string expression, pattern )
- string expression – string expression.
- pattern – säännöllisen lausekkeen matching pattern
- match – parametrin avulla voit muuttaa Oracle REGEXP_LIKE-funktion oletussovituskäyttäytymistä (esimerkiksi muuttaa hakua kirjainherkästä kirjainherkästä kirjainherkäksi).
Basic Oracle REGEXP_LIKE Examples
aloitamme luomalla taulukon nimeltä Names, sen arvojen perusteella seuraavat Oracle REGEXP_LIKE examples suorittavat erilaisia säännöllisen lausekkeen hakuja.
CREATE TABLE namesASSELECT last_name AS NAMEFROM hr.employeesORDER BY salary ;
seuraava Oracle REGEXP_LIKE-esimerkki noutaisi kaikki Nimet, jotka sisältävät kirjaimen ”z”. Tämä Oraakkelinlauseke ei itse asiassa aseta ala-tai ylärajaa kirjainten lukumäärälle ennen tai jälkeen ” z ”- kirjaimen (mikä tahansa merkkien määrä on sallittu), mutta vaatii sanan sisältävän kirjaimen ”z”.
SELECT *FROM namesWHERE regexp_like (name , 'z') ;NAME-------------------------LorentzGietzOzer
seuraava Oracle REGEXP_LIKE-esimerkki noutaisi kaikki Nimet, jotka sisältävät kirjainjärjestyksen ”be”. Tässäkin Oraakkelin SELECT-lauseessa ei itse asiassa aseteta ala-tai ylärajaa kirjainten lukumäärälle ennen tai jälkeen kirjainjonon ” be ”(mikä tahansa merkkien määrä on sallittu), mutta vaatii sanan sisältävän kirjainjonon ”be”.
SELECT *FROM namesWHERE regexp_like (name , 'be') ;NAME---------------------------AbelGreenberg
käyttämällä pipe (/) – operaattoria
Putkioperaattoria ( / ) käytetään määrittelemään vaihtoehtoiset ottelut. Seuraavassa Oracle REGEXP_LIKE-esimerkissä käyttäisimme putkioperaattoria|/) hakeaksemme kaikki Nimet, jotka sisältävät kirjainjärjestyksen ’be’ tai ’ae’. Tämä Oraakkelin SELECT-lausuma ei itse asiassa aseta ala-tai ylärajaa kirjainten lukumäärälle ennen tai jälkeen kirjainjärjestyksen ” be ” tai ” ae ” (mikä tahansa merkkien määrä on sallittu), mutta vaatii sanan sisältämään nämä sekvenssit.
SELECT *FROM namesWHERE regexp_like (name , 'be|ae') ;NAME-------------------------BaerAbelRaphaelyGreenberg
määrittelemällä kirjaimen ” c ” (REGEXP_LIKE-funktion kolmantena argumenttina) voimme tehdä kirjainherkän haun (Oraclen oletusarvo).
SELECT *FROM namesWHERE regexp_like (name , 'be|ae' , 'c' ) ;NAME-------------------------BaerAbelRaphaelyGreenberg
ja täsmentämällä kirjain ” i ” (REGEXP_LIKE-funktion kolmantena argumenttina) voimme tehdä asian epäherkän haun.
SELECT *FROM namesWHERE regexp_like (name , 'be|ae' , 'i' ) ;NAME-------------------------BellBernsteinBaerAbelRaphaelyGreenberg
käyttämällä Caret (^)-operaattoria
Voimme käyttää caret ( ^ )-operaattoria ilmaisemaan rivinalusmerkin, tässä REGEXP_LIKE-esimerkissä haemme kaikki Nimet, jotka alkavat kirjainjärjestyksellä”be”tai” ba ”(asiaton haku)
SELECT *FROM namesWHERE regexp_like (name , '^be|^ba' , 'i' ) ;NAME-------------------------BaidaBellBandaBatesBernsteinBaer
käyttämällä dollarin ($) operaattoria
voimme käyttää dollarin ($) operaattoria ilmaisemaan Rivinvaihtomerkkiä, tässä regexp_like esimerkissä haemme kaikki Nimet, jotka päättyvät kirjainjärjestykseen ” es ” Tai ” er ” (tapauksen tunteeton haku).
SELECT *FROM namesWHERE regexp_like (name , 'es$|er$' , 'i' ) ;NAME-------------------------PhiltankerColmenaresJonesGatesDaviesNayerStilesDellingerBatesBaer
hakasulkeilla
voidaan määrittää hakasulkeiden avulla täsmäävä luettelo, jonka pitäisi vastata mitä tahansa siinä esitettyä lauseketta. Seuraava Oracle REGEXP_LIKE-esimerkki noutaisi kaikki Nimet, jotka sisältävät kirjaimet ” j ” tai ”z”.
SELECT *FROM namesWHERE regexp_like (name , '') ;NAME-------------------------RajsLorentzGietzOzerErrazuriz
tämä REGEXP_LIKE-esimerkki noutaisi kaikki Nimet, jotka sisältävät kirjaimet ” b ” tai ” z ” tai ” E ”(kirjainkokoharkinta hakua)
SELECT * FROM names WHERE regexp_like (name , '') ;NAME-------------------------TobiasCabrioEverettLorentzPataballaErnstCambraultGietzMcEwenCambrault
seuraavaksi muokkaamme viimeistä kyselyämme ja teemme siitä kirjainherkän haun :
SELECT *FROM namesWHERE regexp_like (name , '' , 'i') ;NAME-------------------------PhiltankerZacharyMarkleGeePerkinsColmenaresPatelOConnellMikkilineniTobiasSeo
Tämä Oracle REGEXP_LIKE-esimerkki noutaisi kaikki Nimet, jotka sisältävät kirjaimet”A”,”b”tai ” c”:
SELECT *FROM namesWHERE regexp_like (name , '') ;NAME-------------------------PhiltankerMarkleLandryColmenaresPatelVargasSullivanMarlowGrantMatos
ja sen sijaan, että määrittelisimme kirjaimet ”A”, ” b ” ja ” c ”erikseen, voimme määritellä alueen :
SELECT *FROM namesWHERE regexp_like (name , '') ;NAME-------------------------PhiltankerMarkleLandryColmenaresPatelVargasSullivanMarlowGrantMatos
seuraava Oracle regep_like-esimerkki noutaisi kaikki Nimet, jotka sisältävät kirjaimen alueella ” D ” ja ”G”, jota seuraa kirjain ”a”.
SELECT *FROM namesWHERE regexp_like (name , 'a') ;NAME-------------------------VargasBaidaFleaurBanda
käyttäen ajanjaksoa (.) Operaattori
jakson (.) operaattori vastaa mitä tahansa merkkiä paitsi NULL, seuraava Oracle REGEXP_LIKE-esimerkki noutaisi kaikki Nimet, jotka sisältävät kirjaimen alueella ” b ” ja ”g”, jota seuraa mikä tahansa merkki, jota seuraa kirjain ”a”.
SELECT *FROM namesWHERE regexp_like (name , '.') ;NAME-------------------------ColmenaresTobiasMcCainSarchandSewallCambraultSciarraCambrault
Voimme käyttää Periodioperaattoria edustamaan useampaa kuin yhtä merkkiä, seuraava Oracle REGEXP_LIKE-esimerkki noutaisi kaikki Nimet, jotka sisältävät kirjaimen alueella ” b ” ja ”g”, jota seuraa mikä tahansa kaksi merkkiä, jota seuraa kirjain ”a”.
SELECT *FROM namesWHERE regexp_like (name , '..') ;NAME-------------------------De HaanKochhar
käyttäen kiharasulkeita
kiharasulkeita käytetään määrittämään tarkka esiintymien määrä, esimerkiksi näyttämään kaikki Nimet, jotka sisältävät kaksinkertaiset O-kirjaimet.
SELECT *FROM namesWHERE regexp_like (name , '{2}') ;NAME-------------------------KhooBloom