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