0Pricing
SQL Interview Prep · Lección

LIKE, comodines y escape

Coincidencia de patrones, porcentaje frente a guion bajo y escape de caracteres comodín literales

LIKE, comodines y escape es una lección gratuita de SQL Interview Prep en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Interview Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Interview Prep incluye 4 lecciones en total.

Coincidencia de patrones: lo que se evalúa en las entrevistas

LIKE parece sencillo, pero oculta tres trampas clásicas de las entrevistas: confundir % con _, olvidar que un porcentaje o guion bajo literal en los datos necesita un carácter de escape y la sorpresa de la distinción entre mayúsculas y minúsculas, que varía según la base de datos.

Esta lección profundiza en los dos comodines, la cláusula ESCAPE y las reglas entre dialectos que un entrevistador utilizará para distinguir a los perfiles junior de quienes han creado funcionalidades de búsqueda reales.

Los dos comodines

LIKE tiene exactamente dos caracteres comodín:

  • % coincide con cero o más caracteres
  • _ coincide con exactamente un carácter

Por tanto, 'a%' coincide con cualquier cadena que empiece por a, mientras que 'a_' coincide con una cadena de dos caracteres que empiece por a. Confundirlos es el error número uno con LIKE.

SELECT *
FROM customers
WHERE name LIKE 'A%';
-- every name beginning with A

El porcentaje en cualquier posición

Coloque el % para controlar dónde se fija la coincidencia:

  • '%son' termina en son (Johnson, Mason)
  • '%mary%' contiene mary en cualquier posición
  • 'J%n' empieza por J y termina en n

Un '%' sin más coincide con todas las filas que no sean NULL. Los NULL nunca coinciden con ningún patrón LIKE, incluido '%'.

SELECT *
FROM customers
WHERE email LIKE '%@gmail.com';

El guion bajo para longitudes fijas

_ coincide con un único carácter arbitrario, por lo que resulta útil para códigos de longitud fija. 'A__' coincide exactamente con tres caracteres que empiezan por A, ni uno más ni uno menos.

Los entrevistadores comprueban esto con códigos de producto o códigos de país. El candidato que escribe 'A%' cuando le piden un código de tres caracteres que empiece por A se equivoca sutilmente, ya que devuelve cualquier valor que empiece por A.

SELECT *
FROM products
WHERE sku LIKE 'A__';
-- A followed by exactly two more characters

Cuando % y _ aparecen en los datos

¿Qué ocurre si necesita encontrar valores que contengan literalmente un signo de porcentaje, como la etiqueta de descuento '50% de descuento'? Escribir LIKE '%50%%' falla porque el % final se trata como un comodín, no como un carácter literal.

Debe indicarle a SQL que un carácter concreto es literal. Para eso sirve la cláusula ESCAPE.

La cláusula ESCAPE

Declare un carácter de escape con ESCAPE y, después, antepóngalo a cualquier comodín que quiera tratar literalmente. Aquí ! es el carácter de escape, por lo que !% significa un signo de porcentaje literal.

Esto encuentra valores que contienen el texto literal 50% en cualquier posición. El carácter de escape es arbitrario; elija uno que no aparezca en el texto de búsqueda.

SELECT *
FROM promos
WHERE label LIKE '%50!%%' ESCAPE '!';
-- matches a literal '50%' anywhere in label

Escapar un guion bajo literal

Los guiones bajos aparecen en nombres de usuario e identificadores, y un _ sin escapar coincide silenciosamente con cualquier carácter. Para encontrar direcciones de correo electrónico que empiecen literalmente por 'a_b', debe escapar el guion bajo.

Sin el escape, 'a_b%' también coincidiría con 'axb', 'a9b' y otros valores similares. Este error llega constantemente a producción porque la consulta sin escapar sigue devolviendo filas que parecen plausibles.

SELECT *
FROM users
WHERE handle LIKE 'a!_b%' ESCAPE '!';
-- handle starting with the literal text a_b

La distinción entre mayúsculas y minúsculas varía según la base de datos

Que LIKE distinga entre mayúsculas y minúsculas depende del motor y de la collation:

  • PostgreSQL: LIKE distingue entre mayúsculas y minúsculas; use ILIKE para ignorarlas
  • MySQL: depende de la collation de la columna y a menudo no distingue entre mayúsculas y minúsculas de forma predeterminada
  • SQL Server: depende de la configuración de la collation

El enfoque portable y explícito consiste en convertir ambos lados a minúsculas.

SELECT *
FROM customers
WHERE LOWER(name) LIKE 'a%';

El coste de rendimiento oculto

Un comodín inicial como '%son' no puede utilizar un índice B-tree normal, porque el índice está ordenado por prefijo y no se ha fijado el inicio. El motor debe recorrer todas las filas.

'son%' (comodín final con el prefijo fijado) sí puede utilizar un índice. A los entrevistadores les encanta preguntar por qué una búsqueda con LIKE es lenta; el % inicial suele ser la respuesta.

-- index-friendly (anchored prefix):
WHERE name LIKE 'Smi%'
-- forces a scan (leading wildcard):
WHERE name LIKE '%mith'

Más allá de LIKE

Cuando LIKE no es suficiente, mencione las alternativas para demostrar amplitud de conocimientos:

  • SIMILAR TO y las expresiones regulares POSIX (~, ~*) en PostgreSQL para utilizar expresiones regulares reales
  • Índices de búsqueda de texto completo para grandes corpus de texto libre
  • Índices de trigramas (pg_trgm) para acelerar las búsquedas con comodines iniciales

Mencionar estas opciones demuestra que sabe que LIKE es el punto de partida, no el límite, de la búsqueda de texto.

Crear patrones LIKE de forma segura a partir de la entrada del usuario

Los entrevistadores suelen preguntar: ¿cómo buscaría un término escrito por el usuario con LIKE sin que se produzcan problemas? Hay dos riesgos que debe mencionar:

  • Inyección: vincule el valor como parámetro; nunca concatene la entrada sin procesar en la cadena SQL.
  • Caracteres comodín sin escapar: si la propia entrada contiene % o _, escápelos para que coincidan literalmente.

Vincule el parámetro y, después, añada sus propios comodines en la consulta.

-- $1 is bound as a parameter; wildcards are added in SQL
SELECT *
FROM products
WHERE name LIKE '%' || replace(replace($1, '_', '\_'), '%', '\%') || '%' ESCAPE '\';

Comprobación rápida

Recuerde la diferencia entre los dos comodines.

Resumen

Ideas clave:

  • % coincide con cero o más caracteres; _ coincide exactamente con uno
  • Para hacer coincidir un % o _ literal en los datos, declare un carácter de ESCAPE y antepóngalo al comodín
  • La distinción entre mayúsculas y minúsculas varía según el motor; aplicar LOWER() a ambos lados es la solución portable (Postgres tiene ILIKE)
  • Un comodín inicial obliga a hacer un escaneo completo; un prefijo fijado puede utilizar un índice

Un _ sin escapar es un error silencioso: sigue devolviendo filas plausibles.

Preguntas frecuentes

¿La lección «LIKE, comodines y escape» es gratis?

Sí — el texto completo de «LIKE, comodines y escape» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Interview Prep, actualiza a CoddyKit PRO. El curso de SQL Interview Prep incluye 4 lecciones en total.

¿Qué aprenderé en «LIKE, comodines y escape»?

Coincidencia de patrones, porcentaje frente a guion bajo y escape de caracteres comodín literales Practicas SQL Interview Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar SQL Interview Prep?

No se requiere experiencia previa. SQL Interview Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «LIKE, comodines y escape»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de SQL Interview Prep?

Sí. Cada lección de SQL Interview Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Precedencia y uso de paréntesis en AND/OR
  2. BETWEEN, IN y límites inclusivos
  3. LIKE, comodines y escape
  4. Filtrar por valores calculados
← Volver a SQL Interview Prep