Articles

Oracle Regexp_like Examples

expresiile regulate sunt modele utilizate pentru a potrivi combinațiile de caractere în șiruri de caractere. Oracle 10g a introdus suport pentru expresii regulate folosind diferite funcții. Această postare se concentrează pe funcția Oracle REGEXP_LIKE și explică modul de utilizare a acesteia.

descriere

Oracle REGEXP_LIKE este folosit pentru a efectua o potrivire expresie regulată (mai degrabă decât o simplă potrivire model realizat de LIKE).

sintaxă

REGEXP_LIKE ( string expression, pattern )
  • Expresie șir – expresia șir.
  • pattern – parametrul de potrivire a expresiei regulate
  • match pattern – vă permite să modificați comportamentul de potrivire implicit al funcției Oracle REGEXP_LIKE (de exemplu, modificați căutarea de la majuscule la minuscule).

Exemple Oracle Regexp_like de bază

vom începe prin crearea unui tabel numit Nume, pe baza valorilor sale, următoarele exemple Oracle REGEXP_LIKE vor efectua diferite căutări de expresii regulate.

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

următorul exemplu Oracle REGEXP_LIKE ar prelua toate Numele care conțin litera ‘z’. Această instrucțiune Oracle SELECT nu pune de fapt nicio limită inferioară sau superioară a numărului de Litere înainte sau după litera ‘z’ (orice număr de caractere este permis), dar necesită ca cuvântul să conțină litera ‘z’.

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

următorul exemplu Oracle REGEXP_LIKE ar prelua toate Numele care conțin secvența de Litere ‘be’. Din nou, această declarație Oracle SELECT nu pune de fapt nicio limită inferioară sau superioară a numărului de Litere înainte sau după secvența de Litere ‘be’ (orice număr de caractere este permis), dar necesită ca cuvântul să conțină secvența de Litere ‘be’.

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

utilizarea operatorului pipe (/)

operatorul Pipe ( / ) este utilizat pentru a specifica potriviri alternative. În următorul exemplu Oracle REGEXP_LIKE vom folosi operatorul pipe ( / ) pentru a prelua toate Numele care conțin secvența de Litere ‘be’ sau ‘ae’. Această instrucțiune Oracle SELECT nu pune de fapt nicio limită inferioară sau superioară a numărului de Litere înainte sau după secvența de Litere ‘be’ sau ‘ae'(orice număr de caractere este permis), dar necesită ca cuvântul să conțină aceste secvențe.

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

prin specificarea literei ‘c’ (ca al treilea argument al funcției REGEXP_LIKE) putem face o căutare sensibilă la majuscule (implicit în Oracle).

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

și specificând litera ” i ” (ca al treilea argument al funcției REGEXP_LIKE) putem face o căutare insensibilă la majuscule.

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

folosind operatorul Caret (^)

putem folosi operatorul caret (^) pentru a indica un caracter de început al liniei, în acest exemplu REGEXP_LIKE vom prelua toate Numele care încep cu secvența de Litere ‘be’ sau ‘ba’ (căutare insensibilă la majuscule)

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

folosind operatorul Dollar ( $ )

putem folosi operatorul dollar ($) pentru a indica un caracter de sfârșit de linie, în acest exemplu regexp_like vom prelua toate Numele care se termină cu secvența de litere ‘ES’ sau ‘er’ (căutare insensibilă la majuscule).

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

folosind paranteze pătrate

putem folosi parantezele pătrate pentru a specifica o listă de potrivire care ar trebui să se potrivească cu oricare dintre expresiile reprezentate în ea. Următorul exemplu Oracle REGEXP_LIKE ar prelua toate Numele care conțin literele ‘ j ‘ sau ‘z’.

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

acest exemplu REGEXP_LIKE ar prelua toate Numele care conțin literele ‘b’ sau ‘z’ sau ‘E’ (căutare sensibilă la majuscule)

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

în continuare, vom modifica ultima noastră interogare și o vom face o căutare insensibilă la majuscule :

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

Acest exemplu Oracle REGEXP_LIKE ar prelua toate Numele care conțin literele ‘A’, ‘b’ sau ‘c’ :

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

și în loc să specificăm Literele ‘A’, ‘b’ și ‘C’ separat, putem specifica un interval :

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

următorul exemplu Oracle regep_like ar prelua toate Numele care conțin o literă în intervalul ” D ” și „G”, urmate de litera „a”.

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

folosind perioada (.) Operator

perioada (.) operatorul se potrivește cu orice caracter, cu excepția NULL, următorul exemplu Oracle REGEXP_LIKE ar prelua toate Numele care conțin o literă în intervalul ‘b’ și ‘g’, urmat de orice caracter, urmat de litera ‘a’.

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

putem folosi operatorul de perioadă pentru a reprezenta mai multe caractere, următorul exemplu Oracle REGEXP_LIKE ar prelua toate Numele care conțin o literă în intervalul ” b ” și „g”, urmate de oricare două caractere, urmate de litera „a”.

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

utilizarea parantezelor ondulate

parantezele ondulate sunt folosite pentru a specifica un număr exact de apariții, de exemplu pentru a afișa toate Numele care conțin litere duble ‘o’.

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

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *