Oracle/PLSQL: condición LIKE

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 LIKE

Este tutorial de Oracle describe cómo usar Oracle ME GUSTA condiciones (Realizar coincidencia de patrones) sintaxis, ejemplos y ejercicios.

describir

Las condiciones LIKE de Oracle permiten caracteres comodín en la cláusula WHERE de una instrucción SELECT, INSERT, UPDATE o DELETE. Esto le permite realizar coincidencias de patrones.

sintaxis

La sintaxis de la condición LIKE en Oracle/PLSQL es:

expression LIKE pattern [ ESCAPE 'escape_character' ]

parámetro o parámetro

Expresión Una expresión de carácter, como una columna o un campo.patrón

Una expresión de caracteres que contiene una coincidencia de patrones. Los modos que puede elegir son:

comodín explique
% Le permite hacer coincidir cualquier cadena de cualquier longitud (incluida la longitud cero)
_ le permite hacer coincidir un solo carácter

escape_character es opcional. Le permite probar instancias literales de caracteres comodín como % o _.

notas

  • Consulte también la condición Oracle REGEXP_LIKE.

Ejemplo: uso del comodín % (comodín de porcentaje)

El primer ejemplo de Oracle LIKE que veremos implica el uso del comodín % (comodín de porcentaje).

Expliquemos cómo funciona el comodín % en las condiciones LIKE de Oracle. Queremos encontrar todos los clientes cuyo apellido comience con “Ap”.

SELECT last_name
FROM customers
WHERE last_name LIKE 'Ap%';

También puede usar el comodín % varias veces en la misma cadena. Por ejemplo,

SELECT last_name
FROM customers
WHERE last_name LIKE '%er%';

En este ejemplo de condición LIKE de Oracle, buscamos a todos los clientes cuyo apellido contenga el carácter “er”.

Ejemplo: uso de _ comodín (comodín de subrayado)

A continuación, expliquemos cómo funciona el comodín _ (comodín de subrayado) en las condiciones LIKE de Oracle. Recuerda que el comodín _ solo busca un carácter.

Por ejemplo:

SELECT supplier_name
FROM suppliers
WHERE supplier_name LIKE 'Sm_th';

Este ejemplo de condición LIKE de Oracle devolverá todos los proveedores cuyo nombre_proveedor tenga 5 caracteres, donde los dos primeros caracteres son ‘Sm’ y los dos últimos caracteres son ‘th’. Por ejemplo, podría devolver proveedores con nombres de proveedor “Smith”, “Smyth”, “Smath”, “Smeth”, etc.

Aquí hay otro ejemplo:

SELECT *
FROM suppliers
WHERE account_number LIKE '92314_';

Puede encontrar que está buscando un número de cuenta, pero solo tiene 5 de 6 dígitos. El ejemplo anterior podría recuperar 10 registros (donde el valor faltante podría ser igual a cualquier valor del 0 al 9). Por ejemplo, puede devolver números de cuenta como:

923140, 923141, 923142, 923143, 923144, 923145, 923146, 923147, 923148, 923149

Ejemplo: uso del operador NOT

A continuación, veamos cómo usar el operador Oracle NOT con comodines.

Usemos el comodín % con el operador NOT.También puede usar la condición LIKE de Oracle para encontrar nombres que son No Comience con “T”.

Por ejemplo:

SELECT supplier_name
FROM suppliers
WHERE supplier_name NOT LIKE 'W%';

Al colocar el operador NOT delante de la condición LIKE de Oracle, puede recuperar todos los proveedores cuyos nombres son No Comienza con “W”.

Ejemplo: uso de caracteres de escape

Es importante entender cómo “escapar de los caracteres” al hacer coincidir patrones. Estos ejemplos tratan específicamente con caracteres de escape en Oracle.

Suponga que desea buscar el carácter % o _ en una condición LIKE de Oracle. Puede usar el carácter Escape para hacer esto.

Tenga en cuenta que solo puede definir caracteres de escape como un solo carácter (longitud 1).

Por ejemplo:

SELECT *
FROM suppliers
WHERE supplier_name LIKE 'Water!%' ESCAPE '!';

Este ejemplo de condición LIKE de Oracle identifica el carácter ! como un carácter de escape. Esta declaración devolverá todos los proveedores denominados Water%.

Aquí hay otro ejemplo más complejo del uso de caracteres de escape en condiciones LIKE de Oracle.

SELECT *
FROM suppliers
WHERE supplier_name LIKE 'H%!%' ESCAPE '!';

Este ejemplo de condición LIKE de Oracle devuelve todos los proveedores cuyos nombres comienzan con H y terminan con %. Por ejemplo, devolverá un valor como “Hola%”.

También puede utilizar caracteres de escape con el carácter _ en condiciones LIKE de Oracle.

Por ejemplo:

SELECT *
FROM suppliers
WHERE supplier_name LIKE 'H%!_' ESCAPE '!';

Este ejemplo de condición LIKE de Oracle devuelve todos los proveedores cuyos nombres comienzan con H y terminan con _. Por ejemplo, devolverá un valor como “Hola_”.

Preguntas frecuentes

Pregunta: ¿Cómo combino la función UPPER de Oracle con la condición LIKE de Oracle? Estoy tratando de consultar un campo de texto libre para todos los registros que contienen la palabra “prueba”. El problema es que se puede ingresar por: TEST, Test o prueba.

R: Para responder a esta pregunta, veamos un ejemplo.

Supongamos que tenemos una tabla de proveedores con un campo llamado nombre_proveedor que contiene los valores PRUEBA, Prueba o prueba.

Si quisiéramos encontrar todos los registros que contienen la palabra “prueba”, ya sea que esté almacenada como PRUEBA, Prueba o prueba, podríamos ejecutar cualquiera de las siguientes declaraciones SELECT:

SELECT *
FROM suppliers
WHERE UPPER(supplier_name) LIKE ('TEST%');

o

SELECT *
FROM suppliers
WHERE UPPER(supplier_name) LIKE UPPER('test%')

Estas declaraciones SELECT usan una combinación de la función UPPER de Oracle y una condición LIKE para devolver todos los registros donde el campo nombre_proveedor contiene la palabra “prueba”, ya sea que esté almacenado como PRUEBA, Prueba o prueba.

Ejercicio 1:

Encuentre todos los registros cuyo nombre_empleado termine con la letra “h” en la tabla de empleados con los siguientes datos.

CREATE TABLE employees
( employee_number number(10) not null,
  employee_name varchar2(50) not null,
  salary number(6),
  CONSTRAINT employees_pk PRIMARY KEY (employee_number)
);

INSERT INTO employees (employee_number, employee_name, salary)
VALUES (1001, 'John Smith', 62000);

INSERT INTO employees (employee_number, employee_name, salary)
VALUES (1002, 'Jane Anderson', 57500);

INSERT INTO employees (employee_number, employee_name, salary)
VALUES (1003, 'Brad Everest', 71000);

INSERT INTO employees (employee_number, employee_name, salary)
VALUES (1004, 'Jack Horvath', 42000);

Solución al Ejercicio #1:

La siguiente declaración SELECT usa la condición LIKE de Oracle para devolver registros cuyo nombre_empleado termina con la letra “h”.

SELECT *
FROM employees
WHERE employee_name LIKE '%h';

Devolverá el siguiente conjunto de resultados:

ID de empleado nombre del empleado salario
1001 John Smith 62000
1004 Jack Horvath 42000

Ejercicio de práctica #2:

Encuentre todos los registros cuyo nombre_empleado contenga la letra “s” de la tabla de empleados con los siguientes datos.

CREATE TABLE employees
( employee_number number(10) not null,
  employee_name varchar2(50) not null,
  salary number(6),
  CONSTRAINT employees_pk PRIMARY KEY (employee_number)
);

INSERT INTO employees (employee_number, employee_name, salary)
VALUES (1001, 'John Smith', 62000);

INSERT INTO employees (employee_number, employee_name, salary)
VALUES (1002, 'Jane Anderson', 57500);

INSERT INTO employees (employee_number, employee_name, salary)
VALUES (1003, 'Brad Everest', 71000);

INSERT INTO employees (employee_number, employee_name, salary)
VALUES (1004, 'Jack Horvath', 42000);

Solución al ejercicio #2:

La siguiente sentencia SELECT de Oracle utilizará la condición LIKE de Oracle para devolver registros cuyo nombre_empleado contenga la letra “s”.

SELECT *
FROM employees
WHERE employee_name LIKE '%s%';

Devolverá el siguiente conjunto de resultados:

ID de empleado nombre del empleado salario
1002 jane anderson 57500
1003 brad everest 71000

Ejercicio de práctica #3:

De acuerdo con la tabla de proveedores con los siguientes datos, busque todos los registros con ID de proveedor de 4 dígitos y que comiencen con “500”.

CREATE TABLE suppliers
( supplier_id varchar2(10) not null,
  supplier_name varchar2(50) not null,
  city varchar2(50),
  CONSTRAINT suppliers_pk PRIMARY KEY (supplier_id)
);

INSERT INTO suppliers(supplier_id, supplier_name, city)
VALUES ('5008', 'Microsoft', 'New York');

INSERT INTO suppliers (supplier_id, supplier_name, city)
VALUES ('5009', 'IBM', 'Chicago');

INSERT INTO suppliers (supplier_id, supplier_name, city)
VALUES ('5010', 'Red Hat', 'Detroit');

INSERT INTO suppliers (supplier_id, supplier_name, city)
VALUES ('5011', 'NVIDIA', 'New York');

Solución al Ejercicio #3:

La siguiente instrucción SELECT de Oracle utilizará la condición LIKE de Oracle para devolver registros con un ID de proveedor de 4 dígitos que comience con “500”.

SELECT *
FROM suppliers
WHERE supplier_id LIKE '500_';

Devolverá el siguiente conjunto de resultados:

Identificación del proveedor Nombre del proveedor Ciudad
5008 microsoft Nueva York
5009 IBM chicago
(Visited 20 times, 1 visits today)