Articles

Oracle REGEXP_LIKE Examples

reguljära uttryck är mönster som används för att matcha teckenkombinationer i strängar. Oracle 10g introducerade stöd för reguljära uttryck med olika funktioner. Det här inlägget fokuserar på Oracle REGEXP_LIKE-funktionen och förklarar hur man använder den.

beskrivning

Oracle REGEXP_LIKE används för att utföra en reguljär uttrycksmatchning (snarare än en enkel mönstermatchning utförd av LIKE).

syntax

REGEXP_LIKE ( string expression, pattern )
  • stränguttryck – Stränguttrycket.
  • mönster-matchningsparametern för Reguljärt uttryck
  • – låter dig ändra Standardmatchningsbeteendet för Oracle REGEXP_LIKE-funktionen (till exempel ändra sökningen från skiftlägeskänslig till skiftlägeskänslig).

grundläggande Oracle REGEXP_LIKE exempel

vi börjar med att skapa en tabell som heter namn, baserat på dess värden, kommer följande Oracle REGEXP_LIKE exempel utföra olika reguljära uttryck sökningar.

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

följande Oracle REGEXP_LIKE exempel skulle hämta alla namn som innehåller bokstaven ’z’. Detta Oracle SELECT-uttalande sätter faktiskt ingen nedre eller övre gräns för antalet bokstäver före eller efter bokstaven ’z’ (valfritt antal tecken är tillåtna), men kräver att ordet innehåller bokstaven ’z’.

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

nästa Oracle REGEXP_LIKE-exempel skulle hämta alla namn som innehåller bokstavssekvensen ”be”. Återigen sätter detta Oracle SELECT-uttalande faktiskt ingen nedre eller övre gräns för antalet bokstäver före eller efter bokstavssekvensen ’be’ (valfritt antal tecken är tillåtna), men kräver att ordet innehåller bokstavssekvensen ’be’.

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

använda röroperatören

Röroperatören (/) används för att ange alternativa matchningar. I nästa Oracle REGEXP_LIKE-exempel skulle vi använda röroperatören (|) för att hämta alla namn som innehåller bokstavssekvensen ’be’ eller ’ae’. Detta Oracle SELECT-uttalande sätter faktiskt ingen nedre eller övre gräns för antalet bokstäver före eller efter bokstavssekvensen ’be’ eller ’ae'(valfritt antal tecken är tillåtna), men kräver att ordet innehåller dessa sekvenser.

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

genom att ange bokstaven ’c’ (som det tredje argumentet för REGEXP_LIKE-funktionen) kan vi göra en skiftlägeskänslig sökning (Standard i Oracle).

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

och genom att ange bokstaven ’i’ (som det tredje argumentet för REGEXP_LIKE-funktionen) kan vi göra en skiftlägeskänslig sökning.

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

använda operatören Caret (^)

Vi kan använda operatören caret (^) för att ange ett tecken i början av raden, i det här REGEXP_LIKE exemplet skulle vi hämta alla namn som börjar med bokstavssekvensen”be”eller” ba ”(skiftlägeskänslig sökning)

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

använda Dollar ($) operatör

Vi kan använda Dollar ($) operatör för att indikera en end-of-LINE tecken, i detta regexp_like exempel skulle vi hämta alla namn som slutar med bokstavssekvensen ’es’ eller ’er’ (skiftlägeskänslig sökning).

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

använda hakparenteser

Vi kan använda hakparenteserna för att ange en matchande lista som ska matcha något av de uttryck som representeras i den. Nästa Oracle REGEXP_LIKE exempel skulle hämta alla namn som innehåller bokstäverna ’ j ’eller’z’.

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

detta REGEXP_LIKE exempel skulle hämta alla namn som innehåller bokstäverna ’b’ eller ’z’ eller ’E’ (skiftlägeskänslig sökning)

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

därefter ändrar vi vår sista fråga och gör den till en skiftlägeskänslig sökning :

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

detta Oracle REGEXP_LIKE-exempel skulle hämta alla namn som innehåller bokstäverna”a”,”b”eller ” c”:

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

och istället för att ange bokstäverna ”A”, ” b ” och ” c ”separat kan vi ange ett intervall :

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

nästa Oracle regep_like-exempel skulle hämta alla namn som innehåller en bokstav i intervallet ” d ” och ”g”, följt av bokstaven ”a”.

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

använda perioden (.) Operatör

perioden (.) operatör matchar alla tecken utom NULL, nästa Oracle REGEXP_LIKE exempel skulle hämta alla namn som innehåller en bokstav i intervallet ’ b ’och’ g’, följt av ett tecken, följt av bokstaven’a’.

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

Vi kan använda Periodoperatören för att representera mer än ett tecken, nästa Oracle REGEXP_LIKE-exempel skulle hämta alla namn som innehåller en bokstav i intervallet ” b ” och ”g”, följt av två tecken, följt av bokstaven ”a”.

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

använda lockiga parenteser

de lockiga parenteserna används för att ange ett exakt antal händelser, till exempel visa alla namn som innehåller dubbla o-bokstäver.

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

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *