Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.
Oracle/PLSQL: condición REGEXP_LIKE
Este tutorial de Oracle describe cómo usar Oracle condición REGEXP_LIKE (realiza coincidencias de expresiones regulares) con sintaxis y ejemplos.
* No debe confundirse con las condiciones LIKE que realizan coincidencias de patrones simples.
describir
La condición Oracle REGEXP_LIKE le permite realizar coincidencias de expresiones regulares en la cláusula WHERE de una instrucción SELECT, INSERT, UPDATE o DELETE.
sintaxis
La sintaxis de la condición REGEXP_LIKE en Oracle/PLSQL es:
REGEXP_LIKE ( expression, pattern [, match_parameter ] )
parámetro o parámetro
Expresión Una expresión de carácter, como una columna o un campo. Puede ser un tipo de datos VARCHAR2, CHAR, NVARCHAR2, NCHAR, CLOB o NCLOB.patrón
Información de coincidencia de expresiones regulares. Puede ser una combinación de lo siguiente:
valor | describir |
---|---|
^ | Coincide con el principio de la cadena. Si se usa con el parámetro de coincidencia de ‘m’, coincide con el comienzo de una línea en cualquier parte de la expresión. |
PS | Coincide con el final de la cadena. Si se usa con el parámetro de coincidencia de ‘m’, coincidirá con el final de la línea en cualquier parte de la expresión. |
* | Coincide con cero o más ocurrencias. |
+ | Coincide con una o más coincidencias. |
? | Partido cero o una vez. |
. | Coincide con cualquier carácter excepto NULL. |
| | Use como “O” para especificar múltiples alternativas. |
[ ] | Se utiliza para especificar una lista de coincidencias en la que intenta hacer coincidir cualquiera de los caracteres de la lista. |
[^ ] | Se utiliza para especificar una lista no coincidente en la que está intentando hacer coincidir cualquier carácter excepto los de la lista. |
( ) | Se utiliza para agrupar expresiones en subexpresiones. |
{arroz} | Coincidir m veces. |
{arroz,} | Coincide al menos m veces. |
{Minnesota} | Coincide al menos m veces, pero no más de n veces. |
norte | n es un número entre 1 y 9. Coincide con la n-ésima subexpresión encontrada en ( ) antes de que se encuentre n. |
[..] | Coincide con un elemento de intercalación que puede tener más de un carácter. |
[::] | Coincide con las clases de personajes. |
[==] | Igualar clases de equivalencia. |
D | Coincide con un carácter numérico. |
D | Coincide con caracteres no numéricos. |
w | Coincide con un carácter de palabra. |
W | Coincide con caracteres que no son palabras. |
s | Coincide con un carácter de espacio en blanco. |
S | Coincide con caracteres que no son espacios en blanco. |
Una | Coincide con el principio de la cadena o antes de la nueva línea al final de la cadena coincidente. |
Z | Coincide con el final de la cadena. |
*? | Coincide con cero o más ocurrencias del patrón anterior. |
+? | Coincide con una o más apariciones del patrón anterior. |
?? | Coincide con cero o una aparición del patrón anterior. |
{norte}? | Coincide con el patrón anterior n veces. |
{norte,}? | Coincide con el patrón anterior al menos n veces. |
{Nuevo Méjico}? | Haga coincidir el patrón anterior al menos n veces, pero no más de m veces. |
parámetro de coincidencia
Electivo. Le permite modificar el comportamiento de coincidencia de la condición REGEXP_LIKE. Puede ser una combinación de lo siguiente:
valor | describir |
---|---|
‘C’ | Realice coincidencias con distinción entre mayúsculas y minúsculas. |
‘Una generación’ | Realice una coincidencia que no distinga entre mayúsculas y minúsculas. |
‘norte’ | Permite que el carácter de punto (.) coincida con una nueva línea. De forma predeterminada, los puntos son comodines. |
‘I’ | Se supone que una expresión tiene varias líneas, donde ^ es el comienzo de una línea y $ es el final de una línea, independientemente de la posición de estos caracteres en la expresión. De forma predeterminada, se supone que las expresiones son de una sola línea. |
‘X’ | Los caracteres de espacio en blanco se ignoran. De forma predeterminada, los caracteres de espacio en blanco coinciden como cualquier otro carácter. |
notas
- La condición REGEXP_LIKE usa el conjunto de caracteres de entrada para evaluar la cadena.
- Si especifica valores de parámetros de coincidencia en conflicto, la condición REGEXP_LIKE utilizará el último valor para resolver el conflicto.
- Si se omite match_parameter, la condición REGEXP_LIKE utilizará la distinción entre mayúsculas y minúsculas determinada por el parámetro NLS_SORT.
- Consulte también la condición LIKE de Oracle.
Ejemplo: coincidencia de múltiples alternativas
El primer ejemplo de condición Oracle REGEXP_LIKE que veremos implica el uso |
patrón.
Expliquemos cómo |
El patrón se aplica a la condición Oracle REGEXP_LIKE. Por ejemplo:
SELECT last_name FROM contacts WHERE REGEXP_LIKE (last_name, 'Anders(o|e|a)n');
Este ejemplo de REGEXP_LIKE devolverá todos los contactos con un apellido de Anderson, Andersen o Anderson.Esta |
El patrón nos dice que busquemos la letra “o”, “e” o “a”.
Ejemplo: coincidencia al principio
A continuación, usemos la condición REGEXP_LIKE para que coincida con el comienzo de la cadena. Por ejemplo:
SELECT last_name FROM contacts WHERE REGEXP_LIKE (last_name, '^A(*)');
Este ejemplo de REGEXP_LIKE devolverá todos los contactos cuyo apellido comience con “A”.
Ejemplo: final del partido
A continuación, usemos la condición REGEXP_LIKE para hacer coincidir el final de la cadena. Por ejemplo:
SELECT last_name FROM contacts WHERE REGEXP_LIKE (last_name, '(*)n$');
Este ejemplo de REGEXP_LIKE devolverá todos los contactos cuyo apellido termine con “n”.