Volver a la lista de artículos Artículos
Lectura de 10 minutos

Cómo usar LIKE en SQL: Coincidencia de Patrones en SQL

La coincidencia de patrones en SQL es una habilidad muy importante y útil. En este artículo, vemos cómo puedes realizarla usando LIKE en SQL.

Laconcordancia de patrones SQL es un concepto muy simple. Permite buscar cadenas y subcadenas y encontrar ciertos caracteres o grupos de caracteres. Aparte de SQL, esta operación se puede realizar en muchos otros lenguajes de programación.

En este artículo, examinaremos cómo se puede utilizar LIKE en SQL para buscar subcadenas. También haremos la distinción entre la coincidencia exacta de SQL y la coincidencia parcial de SQL, explicando cómo se puede ampliar la búsqueda mediante el uso de comodines. Por último, aclararemos cuándo debe utilizar algo distinto a LIKE para encontrar una coincidencia.

Si quieres practicar LIKE y otras funciones de SQL, consulta nuestro Ejercicio de SQL pista. Ofrece más de 600 ejercicios interactivos de SQL para ayudarte a repasar tus conocimientos de SQL y ganar confianza en tus habilidades de SQL.

¿Cómo utilizar LIKE en SQL?

Supongamos que tiene que recuperar algunos registros basándose en si una columna contiene un determinado grupo de caracteres. Como sabe, en SQL la cláusula WHERE filtra los resultados de SELECT. Por sí misma, WHERE encuentra coincidencias exactas. ¿Pero qué pasa si necesita encontrar algo utilizando una coincidencia parcial?

En ese caso, puede utilizar LIKE en SQL. Este operador busca en cadenas o subcadenas caracteres específicos y devuelve cualquier registro que coincida con ese patrón. (De ahí la coincidencia de patrones en SQL.) A continuación se muestra la sintaxis del operador LIKE en una sentencia SELECT:

SELECT   [ column_list |  *  ]   
FROM  table_name
WHERE  column or expression  LIKE  pattern;

Observe que el nombre de la columna o la expresión a buscar viene antes de LIKE en SQL. Después del operador está el patrón a comparar. Este patrón puede ser texto puro o texto mezclado con uno o más comodines. A continuación explicaremos el uso de los comodines.

Coincidencia parcial en SQL: Uso de LIKE con comodines

Si no conoce el patrón exacto que está buscando, puede utilizar comodines para ayudarle a encontrarlo. Los comodines son símbolos de texto que denotan cuántos caracteres habrá en un lugar determinado dentro de la cadena. El estándar ANSI de SQL utiliza dos comodines, el porcentaje (%) y el guión bajo (_), que se utilizan de diferentes maneras. Cuando se utilizan comodines, se realiza una coincidencia parcial SQL en lugar de una coincidencia exacta SQL, ya que no se incluye una cadena exacta en la consulta.

wildcard description
% zero, one, or many characters, including spaces
_ a single character

Vea la tabla completa animal que se utilizará en nuestras consultas SQL:

id name
1 frog
2 dog
3 bear
4 fox
5 jaguar
6 puma
7 panda
8 lion
9 leopard
10 sheep
11 camel
12 monkey
13 lemur
14 rabbit
15 hedgehog
16 elephant
17 elephant.. .
18 langur
19 hog
20 gerenuk
21
22 null

Nota: .. . denota dos espacios.

Coincidencia parcial de SQL: el comodín de porcentaje

Como puede ver en la tabla anterior, el comodín de porcentaje se puede utilizar cuando no está seguro de cuántos caracteres formarán parte de su coincidencia. En el ejemplo siguiente, fíjese en lo que ocurre cuando utiliza sólo este comodín con LIKE en SQL:

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE '%' ;

Resultado:

id name
1 frog
2 dog
3 bear
4 fox
5 jaguar
6 puma
7 panda
8 lion
9 leopard
10 sheep
11 camel
12 monkey
13 lemur
14 rabbit
15 hedgehog
16 elephant
17 elephant.. .
18 langur
19 hog
20 gerenuk
21

Nota: .. . denota dos espacios.

Este uso de la coincidencia parcial de SQL devuelve todos los nombres de la animal tabla, incluso los que no tienen ningún carácter en la columna del nombre. Esto se debe a que el comodín de porcentaje denota cualquier carácter o ningún carácter. Incluso cuando hay un valor nulo en la columna nombre, se devuelve una cadena vacía.

Pero si quiere devolver sólo los nombres de los animales que empiezan con un "g", deberá escribir la consulta utilizando un "g"delante del comodín de porcentaje:

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE 'g%' ;

El resultado de esta operación de coincidencia parcial de SQL es el siguiente:

id name
20 gerenuk

Del mismo modo, si desea seleccionar los nombres de animales que terminan con un "g", deberá poner el comodín de porcentaje primero, como se muestra en esta consulta SQL de coincidencia parcial:

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE '%g';

Resultado:

id name
1 frog
2 dog
15 hedgehog
19 hog

La siguiente consulta devuelve todos los animales cuyo nombre contiene un "g". Para ello, utilice dos comodines de porcentaje y un carácter "g", como se muestra a continuación.

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE '%g%';

Resultado:

id name
1 frog
2 dog
5 jaguar
15 hedgehog
18 langur
19 hog
20 gerenuk

Todos estos animales tienen un nombre que contiene una "g" en alguna parte: al principio, en medio o al final.

Ahora, pasemos al comodín de guión bajo.

Coincidencia parcial de SQL: el comodín de guión bajo

El comodín de guión bajo representa un solo carácter para cada guión bajo. En esta coincidencia parcial de SQL, puede reemplazar cualquier carácter, pero cada guión bajo está limitado a un carácter. Observe el siguiente ejemplo:

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE '_';

Resultado:

id name

0 filas

Esta consulta no devuelve ningún registro porque no hay nombres de animales de un solo carácter en la tabla.

El siguiente ejemplo muestra todos los nombres que contienen exactamente cinco caracteres. Para representar esto, debemos utilizar cinco guiones bajos:

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE '_____';

Resultado:

id name
7 panda
10 sheep
11 camel
13 lemur

Si se utiliza el comodín de guión bajo al final de la cadena de coincidencia parcial de SQL, la consulta devolverá todos los registros que coincidan con el texto dado más un carácter más. A continuación vemos un ejemplo:

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE 'lio_';

Resultado:

id name
8 lion

¿Qué se devuelve cuando la consulta tiene un comodín de guión bajo en medio de la cadena?

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE 'p_ma';

Resultado:

id name
6 puma

Se trata de todos los animales cuyos nombres empiezan por "p" y terminan con "ma", con un solo carácter intermedio.

Coincidencia parcial de SQL: Combinación de comodines

También puede utilizar una combinación de guiones bajos y comodines porcentuales para su coincidencia de patrones SQL. Observe el siguiente ejemplo:

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE '%ho_';

Resultado:

id name
15 hedgehog
19 hog

Como puede ver, esta consulta devuelve nombres que combinan "ho" con cualquier número de caracteres delante y sólo un carácter después.

Uso de LIKE en SQL con texto

Ahora discutiremos cómo utilizar LIKE en SQL con cadenas de texto y sin comodines. En algunas circunstancias, puede encontrar que hay mejores opciones que usar LIKE en la búsqueda de patrones en SQL. Pero por ahora, veamos cómo funciona esto. Empezaremos por ver la tabla completa de nombres de animales y números de identificación, como se muestra a continuación:

id name
1 frog
2 dog
3 bear
4 fox
5 jaguar
6 puma
7 panda
8 lion
9 leopard
10 sheep
11 camel
12 monkey
13 lemur
14 rabbit
15 hedgehog
16 elephant
17 elephant. ..
18 langur
19 hog
20 gerenuk
21
22 null

Nota: . .. denota dos espacios.

Observe que el registro en el que id=21 tiene una cadena vacía (sin ningún carácter). El último registro tiene un valor NULL en la columna name.

Ahora, digamos que queremos recuperar los registros donde el nombre del animal es "elefante". Eso es bastante sencillo, como muestra el siguiente ejemplo:

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE 'elephant';

Resultado:

id name
16 elephant

En la tabla, en realidad hay dos registros que contienen "elefante". Sin embargo, el segundo registro tiene dos espacios adicionales al final de la palabra, por lo que no se devuelve.

Probemos con otro patrón de texto que incluya estos dos espacios.

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE 'elephant  ';

Resultado:

id name
17 elephant. ..

Nota: . .. denota dos espacios.

De nuevo, sólo hay un registro: "elefante" con dos espacios.

A continuación, supongamos que utilizamos una cadena de texto concreta y un operador de igualdad (=), así

SELECT 
  id, 
  name 
FROM animal
WHERE name = 'elephant '  ;

Resultado:

id name
16 elephant

Si quiere comprobar si una cadena de texto es igual al valor de una columna, lo que busca es una coincidencia exacta de SQL en lugar de una coincidencia parcial de SQL. En ese caso, utilice un operador igual en lugar de LIKE.

Combinación de los operadores NOT y LIKE

También puede comprobar las cadenas que no coinciden con un patrón. Para ello, combinamos los operadores LIKE y NOT. Es otra forma de realizar la coincidencia de patrones SQL.

En el siguiente ejemplo, queremos encontrar todos los nombres de animales que no tengan el carácter "a":

SELECT 
  id, 
  name 
FROM animal
WHERE name NOT LIKE '%a%';

Resultado:

id name
1 frog
2 dog
4 fox
8 lion
10 sheep
12 monkey
13 lemur
15 hedgehog
19 hog
20 gerenuk
21 camel

Uso de LIKE en SQL con otros operadores

La cláusula WHERE puede incluir más de una condición. Por lo tanto, LIKE y NOT LIKE pueden utilizarse con otros operadores. Veamos otro ejemplo:

SELECT 
  id, 
  name 
FROM animal
WHERE name LIKE '%g'  OR name LIKE 's%'  ;

Resultado:

id name
1 frog
2 dog
10 sheep
15 hedgehog
19 hog

Devuelve todos los nombres de animales que empiezan con un carácter "s" o terminan con un carácter "g".

Uso de LIKE en SQL en otras sentencias

Hasta ahora, hemos discutido el uso de LIKE en SQL sólo en las sentencias SELECT. Pero este operador puede ser usado en otras sentencias, como UPDATE o DELETE. Como puedes ver, la sintaxis es bastante similar:

UPDATE table 
SET column1 = newValue
WHERE  column2  LIKE  pattern ;
DELETE  FROM  table
WHERE  column  LIKE  pattern ;

Veamos cómo podemos utilizar LIKE para cambiar los nombres de algunos animales. ¿Preparado?

UPDATE  animal 
SET name='tiger'
WHERE name LIKE '%key%' ;

Sólo hay un registro que coincide con la condición de LIKE %key%: mono. Tras esta actualización, "tigre" sustituirá a todas las instancias de "mono".

Este es el resultado después de actualizar y seleccionar todos los registros de la tabla animal tabla.

SELECT * 
FROM  animal ;
id name
1 frog
2 dog
3 bear
4 fox
5 jaguar
6 puma
7 panda
8 lion
9 leopard
10 sheep
11 camel
12 tiger
13 lemur
14 rabbit
15 hedgehog
16 elephant
17 elephant.. .
18 langur
19 hog
20 gerenuk
21
22 null

Nota: . .. denota dos espacios.

A continuación, eliminaremos todos los registros en los que el nombre del animal empiece por un carácter "t":

DELETE FROM animal
WHERE name LIKE 't%'  ;

Para saber más sobre la concordancia de patrones SQL

La concordancia de patrones SQL es muy útil para buscar subcadenas de texto. LIKE y su pariente cercano NOT LIKE hacen que esto sea bastante fácil de hacer. Si estás interesado en aprender más sobre la concordancia de patrones y el operador LIKE, consulta el cursoSQL para principiantes . Te mostrará cómo construir consultas desde cero, pero también introducirá habilidades prácticas como la coincidencia de patrones.

Si tienes conocimientos básicos de SQL, puedes refrescarlos con la Ejercicios prácticos de SQL de 88 ejercicios, que van desde tareas sencillas con declaraciones SELECT FROM hasta problemas más avanzados que implican múltiples subconsultas. O pruebe nuestra Ejercicio de SQL con 5 cursos prácticos de SQL y más de 600 ejercicios. ¡ Inscríbase ahora de forma gratuita!