Articles

Oracle REGEKSP_LIKE eksempler

regulære udtryk er mønstre, der bruges til at matche tegnkombinationer i strenge. Oracle 10g introducerede understøttelse af regulære udtryk ved hjælp af forskellige funktioner. Dette indlæg fokuserer på Oracle REGEKSP_LIKE-funktionen og forklarer, hvordan man bruger den.

Description

Oracle REGEKSP_LIKE bruges til at udføre en regulær ekspressionstilpasning (snarere end en simpel mønstertilpasning udført af LIKE).

syntaks

REGEXP_LIKE ( string expression, pattern )
  • strengudtryk – strengudtryk.
  • mønster-det regulære udtryk matchende mønster
  • match parameter – giver dig mulighed for at ændre standard matchende opførsel af Oracle REGEKSP_LIKE-funktionen (for eksempel ændre søgningen fra store og små bogstaver til store og små bogstaver).

grundlæggende Oracle REGEKSP_LIKE eksempler

Vi starter med at oprette en tabel kaldet navne, baseret på dens værdier, vil følgende Oracle REGEKSP_LIKE eksempler udføre forskellige regulære udtrykssøgninger.

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

følgende Oracle REGEKSP_LIKE eksempel ville hente alle de Navne, der indeholder bogstavet ‘å’. Denne Oracle SELECT-sætning sætter faktisk ingen nedre eller øvre grænse for antallet af bogstaver før eller efter bogstavet ‘Å’ (et hvilket som helst antal tegn er tilladt), men kræver, at ordet indeholder bogstavet ‘å’.

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

det næste Oracle REGEKSP_LIKE eksempel ville hente alle de Navne, der indeholder bogstavsekvensen ‘be’. Igen sætter denne Oracle SELECT-sætning faktisk ingen nedre eller øvre grænse for antallet af bogstaver før eller efter bogstavsekvensen ‘be’ (et hvilket som helst antal tegn er tilladt), men kræver, at ordet indeholder bogstavsekvensen ‘be’.

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

brug af røroperatøren

Røroperatøren (/) bruges til at specificere alternative matches. I det næste Oracle REGEKSP_LIKE eksempel ville vi bruge røroperatøren ( / ) for at hente alle de Navne, der indeholder bogstavsekvensen ‘be’ eller ‘ae’. Denne Oracle SELECT-sætning sætter faktisk ingen nedre eller øvre grænse for antallet af bogstaver før eller efter bogstavsekvensen ‘be’ eller ‘ae'(et hvilket som helst antal tegn er tilladt), men kræver, at ordet indeholder disse sekvenser.

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

Ved at angive bogstavet ‘c’ (som det tredje argument for funktionen REGEKSP_LIKE) kan vi lave en sagsfølsom søgning (standard i Oracle).

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

og ved at angive bogstavet ‘i’ (som det tredje argument for funktionen REGEKSP_LIKE) kan vi lave en sag ufølsom søgning.

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

brug af caret (^)-operatoren

Vi kan bruge caret ( ^ )-operatoren til at angive et start-of-line-tegn, i dette regeksp_like eksempel ville vi hente alle Navne, der starter med bogstavsekvensen ‘be’ eller ‘ba’ (case ufølsom søgning)

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

brug af dollar ( $ )-operatøren

Vi kan bruge dollar ( $ ) – operatøren til at angive et End-of-LINE-tegn, i dette regeksp_like eksempel ville vi hente alle Navne, der slutter med bogstavsekvensen ‘es’ eller ‘er’ (case ufølsom søgning).

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

brug af firkantede parenteser

Vi kan bruge de firkantede parenteser til at specificere en matchende liste, der skal matche et af de udtryk, der er repræsenteret i den. Det næste Oracle REGEKSP_LIKE eksempel ville hente alle Navne, der indeholder bogstaverne ‘j’ eller ‘å’.

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

dette regeksp_like eksempel ville hente alle Navne, der indeholder bogstaverne ‘b’ eller ‘å’ eller ‘E’ (case sensitive search)

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

dernæst ændrer vi vores sidste forespørgsel og gør det til en case ufølsom søgning :

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

dette Oracle REGEKSP_LIKE eksempel ville hente alle de Navne, der indeholder bogstaverne ‘a’, ‘b’ eller ‘c’ :

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

og i stedet for at specificere bogstaverne ‘A’, ‘b’ og ‘c’ separat, kan vi specificere et interval :

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

det næste oracle regep_like eksempel ville hente alle Navne, der indeholder et bogstav i området ‘D’ og ‘g’, efterfulgt af bogstavet ‘a’.

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

brug af perioden (.) Operatør

perioden (.) operator matcher ethvert tegn undtagen NULL, det næste Oracle REGEKSP_LIKE eksempel ville hente alle Navne, der indeholder et bogstav i området ‘b’ og ‘g’, efterfulgt af et hvilket som helst tegn efterfulgt af bogstavet ‘a’.

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

Vi kan bruge Periodeoperatøren til at repræsentere mere end et tegn.

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

brug af krøllede parenteser

de krøllede parenteser bruges til at angive et nøjagtigt antal forekomster, for eksempel vise alle Navne, der indeholder dobbelt ‘o’ bogstaver.

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

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *