Articles

Oracle REGEXP_LIKE Examples

reguliere expressies zijn patronen die gebruikt worden om tekencombinaties in tekenreeksen te matchen. Oracle 10g introduceerde ondersteuning voor reguliere expressies met behulp van verschillende functies. Dit bericht richt zich op de Oracle REGEXP_LIKE functie, en legt uit hoe het te gebruiken.

Description

De Oracle REGEXP_LIKE wordt gebruikt om een reguliere expressie matching uit te voeren (in plaats van een eenvoudige patroon matching uitgevoerd door LIKE).

syntaxis

REGEXP_LIKE ( string expression, pattern )
  • string expression – de string expression.
  • patroon-de reguliere expressie overeenkomende patroon
  • match parameter-Hiermee kunt u het standaard overeenkomende gedrag van de Oracle REGEXP_LIKE functie wijzigen (bijvoorbeeld, verander de zoekopdracht van hoofdlettergevoelig naar hoofdletterongevoelig).

Basic Oracle REGEXP_LIKE Examples

we beginnen met het maken van een tabel met namen, gebaseerd op de waarden, de volgende Oracle REGEXP_LIKE examples zullen verschillende reguliere expressie zoekopdrachten uitvoeren.

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

het volgende voorbeeld van Oracle REGEXP_LIKE haalt alle namen op die de letter ‘z’bevatten. Dit Oracle SELECT statement stelt eigenlijk geen Onder – of bovengrens aan het aantal letters voor of na de letter ‘z’ (elk aantal tekens is toegestaan), maar vereist dat het woord de letter ‘z’bevat.

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

het volgende Oracle REGEXP_LIKE voorbeeld zou alle namen ophalen die de letterreeks ‘be’bevatten. Nogmaals, dit Oracle SELECT statement stelt eigenlijk geen Onder – of bovengrens aan het aantal letters voor of na de letterreeks ‘be’ (elk aantal tekens is toegestaan), maar vereist dat het woord de letterreeks ‘be’bevat.

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

met behulp van de pipe (|) operator

De Pipe operator (|) wordt gebruikt om alternatieve overeenkomsten te specificeren. In het volgende Oracle REGEXP_LIKE voorbeeld gebruiken we de pipe operator (|) om alle namen op te halen die de letter-sequentie ‘be’ of ‘ae’bevatten. Dit Oracle SELECT statement legt eigenlijk geen Onder – of bovengrens aan het aantal letters voor of na de letter-sequentie ‘be’ of ‘ae'(elk aantal tekens is toegestaan), maar vereist dat het Woord deze sequenties bevat.

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

door de letter ‘c’ op te geven (als het derde argument van de functie REGEXP_LIKE) kunnen we een hoofdlettergevoelige zoekopdracht maken (de standaard in Oracle).

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

en door de letter ‘i’ op te geven (als het derde argument van de REGEXP_LIKE-functie) kunnen we een hoofdletterongevoelige zoekopdracht maken.

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

het Gebruik van de Caret(^) operator

We kunnen gebruik maken van de caret (^) operator om aan te geven dat de begin-van-line karakter, in dit REGEXP_LIKE voorbeeld zouden we halen alle namen die beginnen met de letter-reeks ‘worden’ of ‘ba’ (hoofdlettergevoelig zoeken)

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

het Gebruik van de Dollar ($) operator

We kunnen gebruik maken van de dollar ($) operator om aan te geven een end-of-line karakter, in dit REGEXP_LIKE voorbeeld zouden we halen alle namen die eindigen met de letter-reeks ‘es’ of ‘er’ (hoofdlettergevoelig zoeken).

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

met vierkante haken

We kunnen de vierkante haken gebruiken om een overeenkomende lijst te specificeren die moet overeenkomen met een van de uitdrukkingen die erin worden weergegeven. Het volgende Oracle REGEXP_LIKE voorbeeld zou alle namen ophalen die de letters ‘j’ of ‘z’bevatten.

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

Dit voorbeeld van REGEXP_LIKE haalt alle namen op die de letters ‘b’ of ‘z’ of ‘E’ bevatten (hoofdlettergevoelig zoeken)

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

:

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

Dit Oracle REGEXP_LIKE voorbeeld zou alle namen ophalen die de letters ‘a’, ‘b’ of ‘c’ bevatten :

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

en in plaats van de letters ‘A’, ‘b’ en ‘c’ afzonderlijk op te geven, kunnen we een bereik specificeren :

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

het volgende Oracle regep_like voorbeeld zou alle namen ophalen die een letter in het bereik van ‘D’ en ‘G’ bevatten, gevolgd door de letter ‘a’.

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

met de periode (.) Operator

de periode (.) operator komt overeen met elk teken behalve NULL, het volgende Oracle REGEXP_LIKE voorbeeld zou alle namen ophalen die een letter in het bereik van ‘b’ en ‘g’ bevatten, gevolgd door elk teken, gevolgd door de letter ‘a’.

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

We kunnen de Periodeoperator gebruiken om meer dan één teken te vertegenwoordigen, het volgende voorbeeld van Oracle REGEXP_LIKE haalt alle namen op die een letter in het bereik van ‘b’ en ‘g’ bevatten, gevolgd door twee tekens, gevolgd door de letter ‘a’.

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

met behulp van accolades

de accolades worden gebruikt om een exact aantal keren te specificeren, bijvoorbeeld alle namen weergeven die dubbele ‘o’ – letters bevatten.

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

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *