Saltar al contenido principal
InicioTutorialesSQL

Tutorial de comparación de patrones SQL LIKE

Utiliza LIKE para filtrar registros SQL según coincidencias de cadenas específicas. Este tutorial te enseña a utilizar comodines, NOT, LOWER, UPPER y CASE WHEN con LIKE.
Actualizado feb 2024  · 8 min leer

El operador LIKE de SQL para la coincidencia de patrones

Te guste o no, el operador LIKE es esencial en SQL. Ofrece a los profesionales de los datos la posibilidad de filtrar los datos según coincidencias de cadenas específicas. Este artículo proporciona un tutorial rápido sobre LIKE para principiantes e intermedios. Si aprendes mejor con la práctica, también puedes seguirnos (y ejecutar el código) en este DataCamp Workspace.

Run and edit the code from this tutorial online

Run Code

employees

emp_no

birth_date

first_name

last_name

gender

hire_date

10001

1953-09-02T00:00:00.000Z

Georgi

Facello

M

1986-06-26T00:00:00.000Z

10002

1964-06-02T00:00:00.000Z

Bezalel

Simmel

F

1985-11-21T00:00:00.000Z

10003

1959-12-03T00:00:00.000Z

Parto

Bamford

M

1986-08-28T00:00:00.000Z

Supongamos que tienes una tabla employees y quieres encontrar todos los nombres que empiezan por ‘A’. Podrías dedicar tiempo a revisar la tabla manualmente. Pero, ¿por qué harías eso cuando tienes el operador LIKE?

SELECT DISTINCT
	first_name
FROM employees
WHERE first_name LIKE 'A%'

La magia aquí está en la cláusula `WHERE first_name LIKE ‘A%’`, que significa "encuentra todos los first_name que empiecen por A y acaben con cualquier número de caracteres". El `A%` se conoce aquí como patrón de concordancia. 

El `%` no es el único comodín que puedes utilizar junto con el operador LIKE. También puedes utilizar el signo de subrayado `_`

  • `%` coincide con cualquier número de caracteres.
  • `_` coincide con cualquier carácter.

La sintaxis es fácil de recordar. Es sencillo.

column_name LIKE pattern

Puedes utilizar LIKE para conseguir una gran variedad de coincidencias de patrones. A continuación, te explicamos cómo hacerlo:

Ejemplos SQL LIKE para principiantes

A continuación, te presentamos algunos ejemplos prácticos de cómo puedes utilizar la declaración LIKE y los resultados de nuestro conjunto de datos de muestra. 

1. Utiliza LIKE para coincidencia exacta de cadenas

Si quieres realizar una coincidencia exacta de cadenas, utiliza LIKE sin ‘%’ o ‘_’

SELECT
    first_name, last_name
FROM employees
WHERE first_name LIKE 'Barry' -- the same as WHERE first_name = ‘Barry’

2. Utiliza ‘%’ para que coincida con cualquier número de caracteres 

‘%’ puede utilizarse para hacer coincidir cualquier número (incluso cero) de caracteres: un número, una letra o un símbolo.

Supongamos que quieres encontrar a todos los empleados cuyo nombre empiece por ‘Adam’; puedes utilizar el patrón ‘Adam%’

SELECT DISTINCT
    first_name
FROM employees
WHERE first_name LIKE 'Adam%'

Para encontrar nombres que terminen en ’Z’, prueba el patrón ‘%z’. También puedes utilizar varios ‘%’ en un mismo patrón. Por ejemplo, si quieres encontrar nombres que contengan z, utiliza ‘%z%’.

3. Utiliza ‘_’ para que coincida con un (y sólo un) carácter

Como en el juego del Ahorcado, en el signo de subrayado _ sólo cabe un carácter.

¿De cuántas formas se puede escribir Le_n? El patrón coincidiría con cualquier cosa de ‘Lexn’, ‘LeAn’, Le3n’, o ‘Le-n’.

SELECT DISTINCT
    first_name
FROM employees
WHERE first_name LIKE 'Le_n'

¿Cuáles son los diferentes nombres con sólo tres caracteres? Podemos averiguarlo utilizando tres guiones bajos consecutivos ___ como patrón.

SELECT DISTINCT
    first_name
FROM employees
WHERE first_name LIKE '___'

4. Utiliza ambos ‘%’ y ‘_’ para que coincida con cualquier patrón

Por supuesto, puedes utilizar tanto ‘%’ como ‘_’ para crear patrones interesantes. 

SELECT DISTINCT
    first_name
FROM employees
WHERE first_name LIKE '%ann_'

El patrón ‘%ann_’ coincide con una cadena que empieza con cualquier número de caracteres y termina con ‘ann’ y otro carácter.

5. Utiliza NOT para encontrar cadenas que no coincidan con un patrón

¿Y si quieres encontrar todas las filas que no cumplen un criterio específico? Puedes utilizar el operador NOT LIKE. Por ejemplo, para encontrar todos los títulos excepto Personal, podemos utilizar la sintaxis

`WHERE title NOT LIKE ‘Staff’`

Esto es exactamente equivalente a la sintaxis

`WHERE title != ‘Staff’`
SELECT DISTINCT
    title
FROM titles
WHERE title NOT LIKE 'Staff'

Por supuesto, puedes utilizar `NOT LIKE` con cualquiera de los patrones que hemos descrito.

SELECT DISTINCT
    title
FROM titles 
WHERE title NOT LIKE '%engineer'

6. Utiliza LOWER (o UPPER) con LIKE para la concordancia de patrones sin distinción entre mayúsculas y minúsculas

Si necesitas realizar una concordancia de patrones pero no estás seguro de si la cadena está almacenada en minúsculas, mayúsculas o mixta, puedes utilizar la siguiente sintaxis.

`LOWER(column_name) LIKE pattern`

La función LOWER() devuelve todas las cadenas en minúsculas, independientemente de si están almacenadas en mayúsculas, minúsculas o mixtas. 

Cuando utilices la sintaxis, ¡asegúrate de escribir el patrón en minúsculas! De lo contrario, es posible que no obtengas ninguna coincidencia.

También podrías sustituir LOWER por UPPER en la sintaxis anterior. Asegúrate de escribir el patrón en MAYÚSCULAS.

`UPPER(column_name) LIKE PATTERN`

Por ejemplo, para averiguar si el nombre de una empleada es Joanne, JoAnne, Joanna o JoAnna, prueba cualquiera de las siguientes opciones.

SELECT DISTINCT
    first_name
FROM employees
WHERE lower(first_name) LIKE 'joann_'
SELECT DISTINCT
    first_name
FROM employees
WHERE UPPER(first_name) LIKE 'JOANN_'

7. SQL LIKE con varios valores utilizando OR/AND

También puedes combinar varias condiciones utilizando la sintaxis LIKE

Por ejemplo, utiliza la condición OR para encontrar resultados que satisfagan al menos uno de los múltiples patrones LIKE.

SELECT DISTINCT
    first_name
FROM employees
WHERE
first_name LIKE 'Ad_l' OR
first_name LIKE 'Ad_m'

Por otra parte, para encontrar una cadena que coincida con varias condiciones LIKE, utiliza la palabra clave AND.

SELECT DISTINCT
    first_name
FROM employees
WHERE
first_name LIKE '%am%' AND
first_name LIKE '%me%'

La sintaxis LIKE puede aplicarse a varias columnas, siempre que su tipo de variable sea un carácter de longitud variable (varchar). Sabiendo que podemos averiguar los nombres de los empleados cuyas iniciales son ‘Z. Z.’

SELECT DISTINCT
    first_name, last_name
FROM employees
WHERE
first_name LIKE 'Z%' AND
last_name LIKE 'Z%'

8. Utiliza LIKE en la cláusula SELECT CASE WHEN  

Hasta ahora, nos hemos centrado en utilizar LIKE como condición para seleccionar registros en la cláusula WHERE. También utilizamos LIKE en la cláusula SELECT. Por ejemplo, ¿podemos saber cuántos empleados con el nombre ‘Adam’ hay en nuestra base de datos?

SELECT
    COUNT(CASE WHEN first_name LIKE 'Adam' THEN 1 END) num_employees_adam
FROM employees

Por otra parte, ¿cuántos empleados tienen las iniciales ‘A.Z.’?

SELECT
    COUNT(CASE WHEN first_name LIKE 'A%' AND last_name LIKE 'Z%' THEN 1 END) num_employees
FROM employees

Ejemplos intermedios de SQL LIKE

La función LIKE es muy similar en los distintos sabores de SQL (por ejemplo, PostgreSQL, MySQL, Redshift, etc.). Algunos tienen variaciones adicionales de la función LIKE que merece la pena mencionar. 

1. El operador ILIKE

Disponible en Redshift y PostgreSQL, ILIKE es la versión de LIKE que no distingue entre mayúsculas y minúsculas. Por tanto, todos los siguientes son equivalentes.

SELECT
  datacamp ILIKE ‘datacamp’, -- returns TRUE
  DATACAMP ILIKE ‘datacamp’, -- returns TRUE
  Datacamp ILIKE ‘datacamp’, -- returns TRUE
  datacamp ILIKE ‘DataCamp’, -- returns TRUE

2. Utilizar corchetes [] y [^] como caracteres comodín

Los usuarios de T-SQL o SQL Server disponen de caracteres comodín adicionales para una coincidencia de patrones más compleja.

La sintaxis de corchetes [] coincide con cualquier carácter específico dentro del rango o conjunto. Por ejemplo, todo lo siguiente devolverá TRUE.

SELECT
  ‘Carson’ LIKE ‘[C-K]arson’, -- returns TRUE because C is in the range C-K
  ‘Karson’ LIKE ‘[C-K]arson’, -- returns TRUE because K is in range
  ‘Larson’ LIKE ‘[CKL]arson’, -- returns TRUE because L is in the set [CKL]
  ‘Parson’ LIKE ‘[C-K]arson’ -- returns FALSE because P is out of range

El comodín caret-in-square-bracket [^] coincide con cualquier carácter que no esté dentro del rango o conjunto especificado. ¿Puedes ver el porqué de los siguientes resultados? 

SELECT
  ‘Carson’ LIKE ‘[^C-K]arson’ -- returns FALSE 
  ‘Parson’ LIKE ‘[^C-K]arson’ -- returns TRUE

Aquí, como C está dentro del rango de [C-K], el patrón ‘C’ no coincidirá con [^C-K]. Por tanto, ‘Carson’ no coincidirá con ‘[^C-K]arson.

3. El operador RLIKE

Disponible en MySQL, el operador RLIKE reconoce expresiones regulares (RegEx) en el patrón. RegEx es una herramienta potente y versátil para la concordancia avanzada de patrones. 

No está de más tener nociones básicas de RegEx, sobre todo si tu versión de SQL admite RLIKE. Puedes aprender más sobre RegEx con nuestro curso Expresiones regulares en Python.

SELECT DISTINCT
    first_name
FROM employees
WHERE first_name RLIKE 'Susann[a-e]'

4. El operador ‘~~’

En PostgreSQL, ‘~~’ es completamente sinónimo de LIKE. También existen equivalentes de ILIKE, NOT LIKE, y NOT ILIKE.

Operador

Equivalente

~~

LIKE

~~*

ILIKE

!~~

NOT LIKE

!~~*

NOT ILIKE

Utiliza SQL LIKE con confianza

Dominar las funciones SQL es clave para tener éxito en la ciencia de datos, y el comando LIKE de SQL no es una excepción. Un buen dominio de SQL potenciará tu progreso analítico, ¡así que asegúrate de aprenderlo bien!

Para más recursos sobre SQL, asegúrate de consultar lo siguiente:

Temas

Más información sobre Python

Course

Introduction to SQL

2 hr
637.5K
Learn how to create and query relational databases using SQL in just two hours.
See DetailsRight Arrow
Start Course
Ver másRight Arrow
Relacionado

blog

SQL Server, PostgreSQL, MySQL... ¿cuál es la diferencia? ¿Por dónde empiezo?

En este tutorial, aprenderás algunas de las diferencias básicas entre los dialectos SQL y por dónde deberías empezar.
Mona Khalil's photo

Mona Khalil

5 min

blog

¿Qué es shell?

Descubre qué es shell y cómo aprenderlo puede convertirte en un científico de datos más eficiente y versátil.

Wendy Gittleson

13 min

tutorial

Tutorial de Chroma DB: guía paso a paso

Con Chroma DB, puedes gestionar fácilmente documentos de texto, convertir texto en incrustaciones y hacer búsquedas por similitud.
Abid Ali Awan's photo

Abid Ali Awan

10 min

tutorial

FUNCIÓN SQL COUNT()

COUNT() te permite contar el número de filas que cumplen determinadas condiciones. Aprende a utilizarlo en este tutorial.
Travis Tang 's photo

Travis Tang

3 min

tutorial

Seleccionar varias columnas en SQL

Aprende a seleccionar fácilmente varias columnas de una tabla de base de datos en SQL, o a seleccionar todas las columnas de una tabla en una simple consulta.
DataCamp Team's photo

DataCamp Team

3 min

tutorial

FUNCIÓN SQL DATEDIFF()

DATEDIFF() es una de las funciones de manipulación de datos de fecha más utilizadas en SQL. Conviértete en un experto leyendo este tutorial.
Travis Tang 's photo

Travis Tang

3 min

See MoreSee More