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