Función REGEXP_LIKE en Oracle

La función REGEXP_LIKE en Oracle es una versión avanzada del operador LIKE. La función REGEXP_LIKE devuelve filas que coinciden con un patrón de expresión regular.

Sintaxis

Escribe la siguiente sintaxis para utilizarlo:

REGEXP_LIKE(
    cadena,
    patron, 
    parametro_coincidencia
)
  • REGEXP_LIKE: nombre de la función.
  • cadena: es la cadena de entrada para buscar el patrón.
  • patrón: es una expresión regular. Puede ser una o la combinación de las siguientes expresiones:
ValorDescripción
^Coincide con el comienzo de una cadena. Si se utiliza con un parámetro de coincidencia de ‘m’, coincide con el inicio de una línea en cualquier lugar dentro de la expresión.
$Coincide con el final de una cuerda. Si se utiliza con un parámetro match_parameter de ‘m’, coincide con el final de una línea en cualquier lugar dentro de la expresión.
*Coincide con cero o más ocurrencias.
+Coincide con una o más ocurrencias.
?Coincide con cero o una ocurrencia.
.Coincide con cualquier carácter excepto NULL.
|Se utiliza como un «OR» para especificar más de una alternativa.
[ ]Se utiliza para especificar una lista coincidente en la que intentas hacer coincidir cualquiera de los caracteres de la lista.
[^ ]Se utiliza para especificar una lista no coincidente en la que intentas coincidir cualquier carácter, excepto los de la lista.
( )Se utiliza para agrupar expresiones como una subexpresión.
{m}Coincide con m veces.
{m,}Coincide al menos m veces.
{m,n}Coincide al menos m veces, pero no más de n veces.
\nN es un número entre 1 y 9. Coincide con la enésima subexpresión encontrada dentro de ( ) antes de encontrar \n.
[..]Coincide con un elemento de intercalación que puede tener más de un carácter.
[::]Partidos de clases de personajes.
[==]Clases de equivalencia de partidos.
\dCoincide con un carácter de dígito.
\DCoincide con un carácter sin dígito.
\wCoincide con un carácter de palabra.
\WCoincide con un carácter que no sea una palabra.
\sCoincide con un carácter de espacio en blanco.
\SCoincide con un carácter que no sea espacio en blanco.
\ACoincide con el comienzo de una cadena o coincide al final de una cadena antes de un carácter de nueva línea.
\ZCoincidencias al final de una cuerda.
*?Coincide con el patrón anterior cero o más ocurrencias.
+?Coincide con el patrón anterior con una o más ocurrencias.
??Coincide con el patrón anterior cero o una ocurrencia.
{n}?Coincide con el patrón anterior n veces.
{n,}?Coincide con el patrón anterior al menos n veces.
{n,m}?Coincide con el patrón anterior al menos n veces, pero no más de m veces.
  • parametro_coincidencia: opcional. Le permite modificar el comportamiento de coincidencia para la función REGEXP_INSTR. Puede ser una combinación de lo siguiente:
ValorDescripción
‘c’Realiza una coincidencia que distingue entre mayúsculas y minúsculas.
‘i’Realiza una coincidencia sin mayúsculas y minúsculas.
‘n’Permite que el punto (.), que es el carácter que coincide con cualquier carácter, coincida con el carácter de nueva línea. Si omite este parámetro, entonces el punto (.) no coincide con el carácter de la nueva línea.
‘m’La función trata la cadena como varias líneas. La función interpreta el signo de dólar (^) y el signo de dólar ($) como el principio y el final, respectivamente, de cualquier línea en cualquier lugar de la cadena, en lugar de solo al principio o al final de toda la cadena. Si omite este parámetro, la función trata la cadena de origen como una sola línea.
‘x’Ignora los caracteres de espacio en blanco. De forma predeterminada, los caracteres de espacio en blanco coinciden entre sí mismos.

Ejemplos

En el siguiente ejemplo utilizamos la función regex_like para encontrar aquellos nombres que acaben en no o do

SELECT
    nombre
FROM
    empleados
WHERE 
    REGEXP_LIKE (nombre, '(n|d)o');

En este otro ejemplo utilizamos la función regex_like para mostrar aquellos empleados que su nombre empiece por M

SELECT
    nombre
FROM
    empleados
WHERE 
    REGEXP_LIKE (nombre, '^M(*)');

Escribir un comentario