Articles

Oracle REGEXP_LIKE Examples

Le espressioni regolari sono modelli utilizzati per abbinare combinazioni di caratteri in stringhe. Oracle 10g ha introdotto il supporto per le espressioni regolari utilizzando diverse funzioni. Questo post si concentra sulla funzione Oracle REGEXP_LIKE e spiega come usarlo.

Descrizione

Oracle REGEXP_LIKE viene utilizzato per eseguire una corrispondenza di espressioni regolari (piuttosto che una semplice corrispondenza di pattern eseguita da LIKE).

sintassi

REGEXP_LIKE ( string expression, pattern )
  • string expression – l’espressione della stringa.
  • pattern – il parametro corrispondenza espressione regolare
  • match-consente di modificare il comportamento di corrispondenza predefinito della funzione Oracle REGEXP_LIKE (ad esempio, modificare la ricerca da case sensitive a case insensitive).

Esempi di base di Oracle REGEXP_LIKE

Inizieremo creando una tabella chiamata Names, in base ai suoi valori, i seguenti esempi di Oracle REGEXP_LIKE eseguiranno diverse ricerche di espressioni regolari.

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

Il seguente esempio Oracle REGEXP_LIKE recupererebbe tutti i nomi che contengono la lettera ‘z’. Questa istruzione Oracle SELECT in realtà non pone limiti inferiori o superiori al numero di lettere prima o dopo la lettera ‘z’ (è consentito un numero qualsiasi di caratteri), ma richiede che la parola contenga la lettera ‘z’.

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

Il prossimo esempio Oracle REGEXP_LIKE recupererebbe tutti i nomi che contengono la sequenza di lettere ‘be’. Ancora una volta, questa istruzione Oracle SELECT non pone alcun limite inferiore o superiore al numero di lettere prima o dopo la sequenza di lettere ‘be’ (è consentito un numero qualsiasi di caratteri), ma richiede che la parola contenga la sequenza di lettere ‘be’.

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

utilizzo dell’operatore pipe (/)

L’operatore Pipe ( / ) viene utilizzato per specificare corrispondenze alternative. Nel prossimo esempio Oracle REGEXP_LIKE useremo l’operatore pipe ( / ) per recuperare tutti i nomi che contengono la sequenza di lettere ‘be’ o ‘ae’. Questa istruzione Oracle SELECT in realtà non pone limiti inferiori o superiori al numero di lettere prima o dopo la sequenza di lettere ‘be’ o ‘ae'(è consentito un numero qualsiasi di caratteri), ma richiede che la parola contenga queste sequenze.

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

Specificando la lettera ‘c’ (come terzo argomento della funzione REGEXP_LIKE) possiamo fare una ricerca case sensitive (l’impostazione predefinita in Oracle).

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

E specificando la lettera ‘i’ (come terzo argomento della funzione REGEXP_LIKE) possiamo fare una ricerca case insensitive.

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

Uso dell’accento Circonflesso(^) operatore

Possiamo usare l’accento circonflesso (^) operatore per indicare un inizio di caratteri per riga, in questo REGEXP_LIKE esempio si può recuperare tutti i nomi che iniziano con la lettera sequenza di ‘essere’ o ‘ba’ (distinzione tra maiuscole e minuscole ricerca)

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

Utilizzando il Dollaro ($) operatore

E ‘ possibile utilizzare il simbolo del dollaro ($) operatore di indicare un termine di caratteri per riga, in questo REGEXP_LIKE esempio si può recuperare tutti i nomi che terminano con la lettera-sequenza di ‘es’ o ‘er’ (distinzione tra maiuscole e minuscole di ricerca).

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

Usando le parentesi quadre

Possiamo usare le parentesi quadre per specificare un elenco corrispondente che dovrebbe corrispondere a una qualsiasi delle espressioni rappresentate in esso. Il prossimo esempio Oracle REGEXP_LIKE recupererà tutti i nomi che contengono le lettere ‘ j ‘ o ‘z’.

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

Questo esempio REGEXP_LIKE recupererebbe tutti i nomi che contengono le lettere ‘b’ o ‘z’ o ‘E’ (ricerca case sensitive)

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

Successivamente, modificheremo la nostra ultima query e la renderemo una ricerca case insensitive :

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

Questo Oracolo REGEXP_LIKE esempio, sarebbe di recuperare tutti i nomi che contengono le lettere ‘a’, ‘b’ o ‘c’ :

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

E invece di specificare le lettere ‘a’, ‘b’ e ‘c’ separatamente, si può specificare un intervallo :

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

Il prossimo Oracle REGEP_LIKE esempio, sarebbe di recuperare tutti i nomi che contengono una lettera nella gamma di ” d ” e “g”, seguito dalla lettera “a”.

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

Utilizzando il punto (.) Operatore

Il periodo (.) operatore corrisponde a qualsiasi carattere tranne NULL, il prossimo esempio Oracle REGEXP_LIKE recupererebbe tutti i nomi che contengono una lettera nell’intervallo di ‘b’ e ‘g’, seguito da qualsiasi carattere, seguito dalla lettera ‘a’.

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

Possiamo usare l’operatore Punto per rappresentare più di un carattere, il prossimo esempio Oracle REGEXP_LIKE recupererebbe tutti i nomi che contengono una lettera nell’intervallo ‘b’ e ‘g’, seguita da due caratteri qualsiasi, seguita dalla lettera ‘a’.

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

Utilizzando le parentesi graffe

Le parentesi graffe vengono utilizzate per specificare un numero esatto di occorrenze, ad esempio visualizzare tutti i nomi che contengono doppie lettere ‘o’.

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *