Articles

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

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *