Articles

Oracle REGEXP_LIKE Eksempler

Regulære uttrykk er mønstre som brukes til å matche tegnkombinasjoner i strenger. Oracle 10g introdusert støtte for regulære uttrykk ved hjelp av ulike funksjoner. Dette innlegget fokuserer På Oracle REGEXP_LIKE-funksjonen, og forklarer hvordan du bruker Den.

Beskrivelse

Oracle REGEXP_LIKE brukes til å utføre en regular expression matching (i stedet for en enkel mønstermatching utført AV LIKE).

syntaks

REGEXP_LIKE ( string expression, pattern )
  • strenguttrykk – strenguttrykk.
  • pattern-regular expression matching pattern
  • match parameter-lar deg endre standard samsvarende oppførsel Av Oracle REGEXP_LIKE funksjon(for eksempel endre søket fra små og store bokstaver til små og store bokstaver).

Grunnleggende Oracle REGEXP_LIKE Eksempler

vi begynner med å lage et bord som heter Navn, basert på verdiene, vil Følgende Oracle REGEXP_LIKE eksempler utføre forskjellige vanlige uttrykkssøk.

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

Følgende Oracle REGEXP_LIKE eksempel ville hente alle navnene som inneholder bokstaven ‘z’. Denne ORACLE SELECT-setningen setter faktisk ingen nedre eller øvre grense på antall bokstaver før eller etter bokstaven ‘z’ (et hvilket som helst antall tegn er tillatt), men krever at ordet inneholder bokstaven ‘z’.

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

det neste ORACLE REGEXP_LIKE-eksemplet vil hente alle navnene som inneholder bokstavsekvensen «be». Igjen, Denne Oracle SELECT-setningen setter faktisk ingen nedre eller øvre grense på antall bokstaver før eller etter bokstavsekvensen ‘be ‘(et hvilket som helst antall tegn er tillatt), men krever at ordet inneholder bokstavsekvensen’be’.

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

bruke røroperatøren ( | )

Røroperatøren (|) brukes til å angi alternative treff. I det neste ORACLE REGEXP_LIKE-eksemplet vil vi bruke røroperatøren ( / ) for å hente alle navnene som inneholder bokstavsekvensen ‘ be ‘eller ‘ ae’. Denne ORACLE SELECT-setningen setter faktisk ingen nedre eller øvre grense på antall bokstaver før eller etter bokstavsekvensen ‘ be ‘eller’ ae ‘ (et hvilket som helst antall tegn er tillatt), men krever at ordet inneholder disse sekvensene.

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

ved å angi bokstaven ‘c’ (som det tredje argumentet I REGEXP_LIKE-funksjonen) kan vi gjøre et saksfølsomt søk (standard i Oracle).

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

og ved å spesifisere bokstaven » i » (som det tredje argumentet I REGEXP_LIKE-funksjonen) kan vi gjøre et saksfølsomt søk.

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

Ved Hjelp Av Caret(^) operatoren

vi kan bruke caret (^) operatoren til å indikere et tegn på begynnelsen av linjen, i DETTE REGEXP_LIKE-eksemplet vil vi hente alle navn som starter med bokstavsekvensen ‘be’ eller ‘ba’ (case insensitive search)

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

ved hjelp av dollar ($) operatoren

vi kan bruke dollar ($) operatoren til å indikere et end-Of-Line tegn, i dette regexp_like eksempelet vil vi hente alle navn som slutter med bokstavsekvensen ‘es’ eller ‘er’ (case insensitive search).

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

Ved Hjelp Av Firkantede Parenteser

Vi kan bruke Firkantede Parenteser til å angi en matchende liste som skal samsvare med et av uttrykkene som er representert i den. Det neste Oracle REGEXP_LIKE-eksemplet vil hente alle navn som inneholder bokstavene ‘ j ‘eller ‘ z’.

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

DETTE REGEXP_LIKE eksemplet vil hente alle navn som inneholder bokstavene ‘b’ eller ‘z’ eller ‘E’ (saksfølsomt søk)

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

Neste, vi vil endre vår siste spørring og gjøre det til et saksfølsomt søk :

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

DETTE ORACLE REGEXP_LIKE-eksemplet vil hente alle navnene som inneholder bokstavene ‘a’, ‘b’ eller ‘c’ :

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

og i stedet for å spesifisere bokstavene ‘a’, ‘b’ og ‘c’ separat, kan vi angi et område :

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

neste oracle regep_like eksempel ville hente Alle Navn SOM INNEHOLDER EN BOKSTAV i området ‘d’ og ‘g’, etterfulgt av bokstaven ‘a’.

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

Bruke Perioden (.) Operatør

perioden (.) operator matcher alle tegn unntatt NULL, Neste Oracle REGEXP_LIKE eksempel ville hente alle navn som inneholder en bokstav i området ‘ b ‘ og ‘g’, etterfulgt av alle tegn, etterfulgt av bokstaven ‘a’.

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

Vi kan bruke Periodeoperatøren til å representere mer enn ett tegn, det neste ORACLE REGEXP_LIKE-eksemplet vil hente alle navn som inneholder en bokstav i området » b » og «g», etterfulgt av to tegn, etterfulgt av bokstaven «a».

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

bruke klammeparentesene

klammeparentesene brukes til å angi et eksakt antall forekomster, for eksempel vise alle navn som inneholder doble o-bokstaver.

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

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *