Operador LIKE en PostgreSQL

Utilizamos el operador LIKE en PostgreSQL en el where para comprobar si cierta parte del valor de un campo contiene la palabra indicada. Por ejemplo, lo podemos utilizar en un campo que contiene nombre y apellidos y únicamente queremos obtener los registros donde su nombre sea Miguel sin importar el apellido. Vamos a verlo…

Sintaxis

La sintaxis del operador LIKE es la siguiente:

campo like 'Miguel%'

En el ejemplo anterior puedes observar como tenemos un carácter especial, %, este indica que después de la palabra Miguel puede contener más letras. Si colocamos el % por delante le indicaríamos que debe acabar en Miguel y por tanto por delante podría tener cualquier otro carácter.

Puedes combinar el operador LIKE junto al NOT para indicar que el valor del campo no debe contener esos valores:

campo not like 'Miguel%'

Tanto LIKE como NOT LIKE pueden hacer uso de los siguientes comodines:

  • %: el porcentaje indica uno o más caracteres.
  • _: el guión bajo indica un único caracter.

Importante

PostgreSQL soporta el operador ILIKE. Se utiliza igual que LIKE pero la diferencia es que no es sensible a mayusculas y minúsculas.

Alternativas

PostgreSQL proporciona alternativas al operador LIKE. Puedes usar estas equivalencias:

OperadorEquivalencia
~~LIKE
~~*ILIKE
!~~NOT LIKE
!~~*NOT ILIKE

Ejemplos

En el siguiente ejemplo utilizamos el operador LIKE para mostrar solo aquellos empleados donde su apellido sea Troyano. Recuerda que nuestro campo de nombre contiene nombre y apellidos.

select *
from empleados
where nombre like '%Troyano';

En este otro ejemplo combinamos like con not like. Le estamos indicando que el nombre no puede acabar en Troyano y que ademas debe empezar por Pilar.

select *
from empleados
where nombre not like '%Troyano'
and nombre like 'Pilar%'
Operador LIKE en PostgreSQL

En este otro ejemplo estamos mostrando todos los empleados donde su segunda letra sea un i:

select *
from empleados
where nombre like '_i%'

Ejemplo completo

Copia y pega el siguiente código en tu consola de PostgreSQL y realiza paso a paso leyendo los comentarios:

-- Borramos la tabla si existe
drop table if exists empleados;

-- Creamos la tabla
create table empleados
(
    id_empleado numeric(2,0),
    id_departamento numeric(2,0),
    nombre character varying(50),
    puesto character varying(50),
    sueldo integer
);

-- Insertamos valores
insert into empleados
values (1,1,'Miguel Troyano','Analista',60000),
       (2,1,'Ismael Troyano','Analista',60000),
	   (3,1,'Jose Troyano','Director',80000),
	   (4,1,'Pilar Redondo','Directora',80000);

-- Mostramos los empleados donde el valor
-- del campo nombre acabe en Troyano
select *
from empleados
where nombre like '%Troyano'

-- Mostramos los empleados donde el valor
-- del campo nombre no acabe en Troyano
-- y comience por Pilar
select *
from empleados
where nombre not like '%Troyano'
and nombre like 'Pilar%'

-- Mostramos los empleados donde el segundo
-- character sea una i
select *
from empleados
where nombre like '_i%'

Escribir un comentario

Este sitio está protegido por reCAPTCHA y se aplican la política de privacidad y los términos de servicio de Google.