Ejemplos de Oracle REGEXP_LIKE
Las expresiones regulares son patrones utilizados para hacer coincidir combinaciones de caracteres en cadenas. Oracle 10g introdujo soporte para expresiones regulares utilizando diferentes funciones. Esta publicación se centra en la función REGEXP_LIKE de Oracle y explica cómo usarla.
Descripción
el Oracle REGEXP_LIKE se utiliza para realizar una coincidencia de expresiones regulares (en lugar de una simple coincidencia de patrones realizada por LIKE).
sintaxis
REGEXP_LIKE ( string expression, pattern )
- expresión de cadena – la expresión de cadena.
- pattern-la expresión regular patrón coincidente
- parámetro coincidencia-le permite cambiar el comportamiento de coincidencia predeterminado de la función REGEXP_LIKE de Oracle (por ejemplo, cambiar la búsqueda de mayúsculas y minúsculas a minúsculas).
Ejemplos básicos de Oracle REGEXP_LIKE
Comenzaremos creando una tabla llamada Names, basada en sus valores, los siguientes ejemplos de Oracle REGEXP_LIKE realizarán diferentes búsquedas de expresiones regulares.
CREATE TABLE namesASSELECT last_name AS NAMEFROM hr.employeesORDER BY salary ;
El siguiente ejemplo de Oracle REGEXP_LIKE recuperaría todos los nombres que contienen la letra ‘z’. Esta instrucción Oracle SELECT en realidad no pone un límite inferior o superior en el número de letras antes o después de la letra ‘z ‘(se permite cualquier número de caracteres), pero requiere que la palabra contenga la letra’z’.
SELECT *FROM namesWHERE regexp_like (name , 'z') ;NAME-------------------------LorentzGietzOzer
El siguiente ejemplo de Oracle REGEXP_LIKE recuperaría todos los nombres que contienen la secuencia de letras ‘be’. Una vez más, esta instrucción Oracle SELECT en realidad no pone un límite inferior o superior en el número de letras antes o después de la secuencia de letras ‘be’ (se permite cualquier número de caracteres), pero requiere que la palabra contenga la secuencia de letras ‘be’.
SELECT *FROM namesWHERE regexp_like (name , 'be') ;NAME---------------------------AbelGreenberg
usando el operador de tubería (/)
El operador de tubería ( | ) se usa para especificar coincidencias alternativas. En el siguiente ejemplo de Oracle REGEXP_LIKE usaríamos el operador de tubería ( | ) para recuperar todos los nombres que contienen la secuencia de letras ‘be’ o ‘ae’. Esta instrucción Oracle SELECT en realidad no pone un límite inferior o superior en el número de letras antes o después de la secuencia de letras ‘be’ o ‘ ae ‘ (se permite cualquier número de caracteres), pero requiere que la palabra contenga estas secuencias.
SELECT *FROM namesWHERE regexp_like (name , 'be|ae') ;NAME-------------------------BaerAbelRaphaelyGreenberg
Especificando la letra ‘c’ (como tercer argumento de la función REGEXP_LIKE) podemos hacer una búsqueda sensible a mayúsculas y minúsculas (la predeterminada en Oracle).
SELECT *FROM namesWHERE regexp_like (name , 'be|ae' , 'c' ) ;NAME-------------------------BaerAbelRaphaelyGreenberg
Y especificando la letra ‘ i ‘(como tercer argumento de la función REGEXP_LIKE) podemos hacer una búsqueda insensible a mayúsculas y minúsculas.
SELECT *FROM namesWHERE regexp_like (name , 'be|ae' , 'i' ) ;NAME-------------------------BellBernsteinBaerAbelRaphaelyGreenberg
Usando el operador Caret (^)
Podemos usar el operador caret (^) para indicar un carácter de inicio de línea, en este ejemplo REGEXP_LIKE recuperaríamos todos los nombres que comienzan con la secuencia de letras ‘be’ o ‘ba’ (búsqueda sin distinción de mayúsculas y minúsculas)
SELECT *FROM namesWHERE regexp_like (name , '^be|^ba' , 'i' ) ;NAME-------------------------BaidaBellBandaBatesBernsteinBaer
Usando el operador Dollar (Dollar)
Podemos usar el operador dollar (dollar) para indicar un carácter de final de línea, en este ejemplo REGEXP_LIKE recuperaríamos todos los nombres que terminan con la secuencia de letras ‘es’ o ‘er’ (búsqueda insensible a mayúsculas y minúsculas).
SELECT *FROM namesWHERE regexp_like (name , 'es$|er$' , 'i' ) ;NAME-------------------------PhiltankerColmenaresJonesGatesDaviesNayerStilesDellingerBatesBaer
Usando corchetes
Podemos usar los Corchetes para especificar una lista coincidente que debe coincidir con cualquiera de las expresiones representadas en ella. El siguiente ejemplo de Oracle REGEXP_LIKE recuperaría todos los nombres que contienen las letras ‘ j ‘ o ‘z’.
SELECT *FROM namesWHERE regexp_like (name , '') ;NAME-------------------------RajsLorentzGietzOzerErrazuriz
Este ejemplo REGEXP_LIKE recuperaría todos los nombres que contienen las letras ‘ b ‘o’ z ‘ o ‘ E ‘ (búsqueda que distingue entre mayúsculas y minúsculas)
SELECT * FROM names WHERE regexp_like (name , '') ;NAME-------------------------TobiasCabrioEverettLorentzPataballaErnstCambraultGietzMcEwenCambrault
A continuación, modificaremos nuestra última consulta y la haremos una búsqueda que no distingue entre mayúsculas y minúsculas :
SELECT *FROM namesWHERE regexp_like (name , '' , 'i') ;NAME-------------------------PhiltankerZacharyMarkleGeePerkinsColmenaresPatelOConnellMikkilineniTobiasSeo
Este Oráculo REGEXP_LIKE ejemplo podría recuperar todos los nombres que contienen las letras ‘a’, ‘b’ o ‘c’ :
SELECT *FROM namesWHERE regexp_like (name , '') ;NAME-------------------------PhiltankerMarkleLandryColmenaresPatelVargasSullivanMarlowGrantMatos
Y en lugar de especificar las letras ‘a’, ‘b’ y ‘c’ por separado, se puede especificar un rango :
SELECT *FROM namesWHERE regexp_like (name , '') ;NAME-------------------------PhiltankerMarkleLandryColmenaresPatelVargasSullivanMarlowGrantMatos
La siguiente Oracle REGEP_LIKE ejemplo podría recuperar todos los nombres que contienen una letra en el rango de » d » y «g», seguido de la letra ‘a’.
SELECT *FROM namesWHERE regexp_like (name , 'a') ;NAME-------------------------VargasBaidaFleaurBanda
Usando el Punto (. Operador
El punto (.) el operador coincide con cualquier carácter excepto NULL, el siguiente ejemplo de Oráculo REGEXP_LIKE recuperaría todos los nombres que contienen una letra en el rango de ‘ b ‘y’ g’, seguido de cualquier carácter, seguido de la letra’a’.
SELECT *FROM namesWHERE regexp_like (name , '.') ;NAME-------------------------ColmenaresTobiasMcCainSarchandSewallCambraultSciarraCambrault
Podemos usar el operador de Punto para representar más de un carácter, el siguiente ejemplo de Oracle REGEXP_LIKE recuperaría todos los nombres que contienen una letra en el rango de ‘b’ y ‘g’, seguido de dos caracteres cualesquiera, seguido de la letra ‘a’.
SELECT *FROM namesWHERE regexp_like (name , '..') ;NAME-------------------------De HaanKochhar
Utilizando los corchetes rizados
Los corchetes rizados se utilizan para especificar un número exacto de ocurrencias, por ejemplo, para mostrar todos los nombres que contienen letras ‘o’ dobles.
SELECT *FROM namesWHERE regexp_like (name , '{2}') ;NAME-------------------------KhooBloom