MySQL Comodines: Me gusta, No me gusta, Escape, ( %), ( _ )

⚡ Resumen inteligente

MySQL Los comodines permiten realizar búsquedas basadas en patrones al combinar los operadores LIKE y NOT LIKE con caracteres especiales. Esto explica los comodines de porcentaje y guion bajo, la palabra clave ESCAPE, las consultas prácticas en la base de datos myflixdb y las consideraciones de rendimiento.

  • 🔍 Definición básica: Los caracteres comodín son caracteres de marcador de posición que utilizan las funciones LIKE y NOT LIKE para coincidir con patrones de texto en lugar de valores exactos.
  • 📊 Porcentaje comodín: El símbolo % coincide con cero o más caracteres, por lo que '%code%' devuelve todos los títulos de películas que contienen la palabra código.
  • 🔡 Comodín de guion bajo: El símbolo _ coincide exactamente con un carácter, por lo que '200_' devuelve los títulos publicados entre 2000 y 2009.
  • 🚫 Regla de negación: NOT LIKE invierte la comparación y devuelve todas las filas que no cumplen con el patrón especificado.
  • 🛡️ Manejo de escape: La palabra clave ESCAPE marca un % o _ literal dentro de la cadena de búsqueda para que se trate como datos.
  • Información sobre el rendimiento: Un % inicial bloquea el uso del índice y fuerza un escaneo completo de la tabla, por lo que siempre que sea posible, ancle los patrones a la izquierda.
  • 🧩 Selección del método: LIKE cubre la coincidencia simple de prefijos y sufijos, mientras que REGEXP maneja las clases de caracteres y la alternancia.

¿Qué son MySQL ¿Comodines?

MySQL Comodines Los caracteres comodín son caracteres especiales que ayudan a buscar datos que coincidan con un patrón complejo en lugar de un valor exacto. Siempre se utilizan junto con el operador de comparación LIKE o con el operador de comparación NOT LIKE.

MySQL Admite dos caracteres comodín, y cada uno responde a una pregunta diferente sobre sus datos.

Comodín Significado Patrón de ejemplo Cerillas
% Cero (0) o más caracteres '%código%' Code Nombre Black, Davinci Code
_ Exactamente un carácter '200_' de 2005

Ahora que los dos personajes están definidos, la siguiente sección explica por qué vale la pena aprender sobre ellos.

¿Por qué usar comodines en? MySQL?

Si estás familiarizado con SQL, quizás pienses que ya puedes buscar cualquier dato complejo usando SELECT y la cláusula WHERE. Entonces, ¿por qué usar comodines?

Antes de responder a esa pregunta, veamos un ejemplo. Supongamos que el departamento de marketing de la videoteca Myflix realizó promociones en Texas y desea obtener información sobre la cantidad de miembros registrados desde ese estado. Puede usar la siguiente instrucción SELECT junto con la cláusula WHERE para obtener la información deseada.

SELECT * FROM members
WHERE postal_address = 'Austin, TX'
   OR postal_address = 'Dallas, TX'
   OR postal_address = 'Iola, TX'
   OR postal_address = 'Houston, TX';

Como puede ver en la consulta anterior, el "Dónde cláusulaLa consulta se vuelve larga y compleja: cada nueva ciudad debe agregarse manualmente, y cualquier dirección mal escrita se excluye automáticamente. El uso de comodines simplifica la consulta, ya que un solo patrón abarca todas las ciudades del estado.

SELECT * FROM members
WHERE postal_address LIKE '%TX';

En resumen, los caracteres comodín permiten incorporar potentes funciones de búsqueda en aplicaciones basadas en datos con mucho menos código SQL. La siguiente sección analiza cada carácter comodín en detalle.

Tipos de MySQL Comodines

% – El comodín de porcentaje

El carácter de porcentaje (%) se utiliza para especificar un patrón de cero (0) o más caracteresTiene la siguiente sintaxis básica.

SELECT * FROM table_name
WHERE fieldname LIKE 'xxx%';

AQUÍ:

  • "Instrucción SELECT” es el comando SQL SELECT estándar.
  • “WHERE” es la palabra clave que se utiliza para aplicar el filtro.
  • “LIKE” es el operador de comparación que se utiliza junto con los comodines.
  • 'xxx' es cualquier patrón especificado, como un solo carácter o más, y "%" coincide con cualquier número de caracteres a partir de cero (0).

Para comprender mejor lo anterior, veamos un ejemplo práctico. Supongamos que queremos obtener todas las películas que contengan la palabra "código" en su título. Utilizaríamos el comodín de porcentaje a ambos lados de la palabra "código" para realizar una coincidencia de patrones en cualquier parte del título.

SELECT * FROM movies
WHERE title LIKE '%code%';

Ejecutando el script anterior en MySQL Banco de trabajo Al realizar la búsqueda en la base de datos myflixdb, obtenemos los resultados que se muestran a continuación.

id_película título director año_de lanzamiento categoria ID
4 Code Nombre Negro Edgar Jimz 2010 NULL
7 Da Vinci Code NULL NULL 6

Observe que la palabra clave de búsqueda "código" se devuelve tanto si aparece al principio como al final del título. Esto se debe a que el patrón permite cualquier número de caracteres antes de "código" y cualquier número de caracteres después.

Ahora vamos a modificar el script para que el comodín de porcentaje aparezca solo al principio de los criterios de búsqueda.

SELECT * FROM movies
WHERE title LIKE '%code';

Ejecutando el script anterior en MySQL La comprobación realizada en Workbench con la base de datos myflixdb nos proporciona los resultados que se muestran a continuación.

id_película título director año_de lanzamiento categoria ID
7 Da Vinci Code NULL NULL 6

Observe que solo se ha devuelto un registro. El patrón coincide con cualquier número de caracteres al principio del título, pero requiere que el título esté final con “código”.

Ahora, coloquemos el comodín de porcentaje al final del patrón. El script modificado se muestra a continuación.

SELECT * FROM movies
WHERE title LIKE 'code%';

Ejecutando el script anterior en MySQL La comprobación realizada en Workbench con la base de datos myflixdb nos proporciona los resultados que se muestran a continuación.

id_película título director año_de lanzamiento categoria ID
4 Code Nombre Negro Edgar Jimz 2010 NULL

Solo se devuelve un registro, porque este patrón coincide con cada título que comienza con “código” seguido de cualquier número de caracteres. Por lo tanto, la posición del símbolo % determina el significado de la búsqueda.

💡 Consejo: Un patrón como 'code%' aún puede usar un índice en la columna del título, mientras que '%code%' no puede. Un comodín de porcentaje inicial obliga MySQL para escanear cada fila, así que mantenga el comodín a la derecha siempre que la búsqueda lo permita.

_ – El comodín de guion bajo

El comodín de guión bajo se utiliza para coincidir exactamente con un carácterSupongamos que queremos encontrar todas las películas estrenadas en el año 200x, donde x es un único carácter que puede tomar cualquier valor. El siguiente script selecciona todas las películas estrenadas en el año “200x”.

SELECT * FROM movies
WHERE year_released LIKE '200_';

Ejecutando el script anterior en MySQL La comprobación realizada en Workbench con la base de datos myflixdb nos proporciona los resultados que se muestran a continuación.

id_película título director año_de lanzamiento categoria ID
2 Olvidando a Sarah Marshal Nicolás Stoller 2008 2
9 Honey moonERS Jhon Shultz 2005 8

Tenga en cuenta que solo se devuelven las películas cuyo valor year_released sea 200 seguido de cualquier carácter. A diferencia del comodín de porcentaje, el guion bajo reserva un espacio para un solo carácter.

NO COMO con comodines

El operador lógico NOT se puede usar junto con comodines para devolver las filas que no se cumplen. No coincide con el patrón especificado.

Supongamos que queremos las películas que no se estrenaron en el año 200x. Combinamos el operador lógico NOT con el comodín de guion bajo, como se muestra a continuación.

SELECT * FROM movies
WHERE year_released NOT LIKE '200_';
id_película título director año_de lanzamiento categoria ID
1 Piratas del Caribe 4 Rob Marshall 2011 1
4 Code Nombre Negro Edgar Jimz 2010 NULL
8 Inframundo-Awakencont Michael Eal 2012 6

Solo se devuelven las películas que no siguen el patrón 200x, porque NOT invierte el resultado de la comparación de comodines. Tenga en cuenta que las filas que contienen un NULL Los valores nunca son devueltos por LIKE o NOT LIKE, ya que NULL es desconocido en lugar de desigual.

Palabra clave ESCAPE

La palabra clave ESCAPE se utiliza para caracteres de coincidencia de patrones de escape como el porcentaje (%) y el guion bajo (_) cuando forman parte de los datos mismos.

Supongamos que queremos buscar la cadena literal “67%”. Declaramos un carácter de escape y lo colocamos inmediatamente antes del carácter que debe leerse como dato.

LIKE '67#%%' ESCAPE '#';

Si queremos encontrar la película “67% Culpable”, podemos usar el guion que se muestra a continuación.

SELECT * FROM movies
WHERE title LIKE '67#%%' ESCAPE '#';

Observe el doble “%%” en la cláusula LIKE. El primero va precedido del carácter de escape (#) y, por lo tanto, se trata como parte de la cadena que se busca. El segundo conserva su función de comodín y coincide con cualquier número de caracteres que le sigan.

Cualquier carácter puede servir como carácter de escape, por lo que la misma consulta también funciona con el signo de igual.

SELECT * FROM movies
WHERE title LIKE '67=%%' ESCAPE '=';

Los comodines cubren muy bien los patrones simples, pero algunas búsquedas requieren reglas más expresivas. La comparación que se muestra a continuación ilustra dónde reside el límite.

MySQL Comodines vs. expresiones regulares: ¿cuál debería usar?

MySQL Admite solo dos caracteres comodín. Las listas de caracteres como [ac], que algunos otros motores de bases de datos aceptan dentro de LIKE, no son compatibles. Cuando una búsqueda necesita rangos de caracteres, alternancia o anclaje, operador REGEXP es la elección correcta

Criterio LIKE con comodines REGEXP
Poder del patrón Solo dos símbolos: % y _ Clases de personajes, rangos, alternancia, repetición
Uso típico Búsquedas por prefijo, sufijo o "contiene" Validación, coincidencia compleja, múltiples alternativas
Uso del índice Posible cuando el patrón no comienza con % Nunca utiliza un índice
Legibilidad Simple para principiantes Curva de aprendizaje más pronunciada

Por regla general, recurra primero a LIKE: es más fácil de leer y es el único de los dos que puede beneficiarse de un índice. Pase a REGEXP cuando un solo patrón deba expresar varias alternativas, por ejemplo, hacer coincidir cada título que comience con un dígito. Ambos operadores son comparaciones de solo lectura, por lo que ninguno cambia las filas devueltas por INSERT or ACTUALIZAR declaraciones; solo filtran lo que selecciona la cláusula WHERE.

Preguntas Frecuentes

No, no por defecto. LIKE sigue la intercalación de la columna y el estándar MySQL Las intercalaciones no distinguen entre mayúsculas y minúsculas, por lo que 'code%' también coincide con “Code”. Agregue la palabra clave BINARY antes de la columna cuando se requiera una coincidencia que distinga entre mayúsculas y minúsculas.

Sí. MySQL Convierte el valor a una cadena antes de compararlo, por eso funciona year_released LIKE '200_'. La conversión impide el uso de índices en esa columna, así que en tablas grandes, filtre con rangos como BETWEEN 2000 AND 2009.

No. La lista de caracteres entre corchetes aceptada por algunos otros motores no es válida dentro de un MySQL Patrón LIKE. Utilice el operador REGEXP En cambio, por ejemplo, title REGEXP '^[ac]', para que coincida con un rango de caracteres iniciales.

Sí. Los asistentes de IA traducen las solicitudes en lenguaje sencillo a patrones LIKE que puede ejecutar en un cliente como MySQL Banco de trabajoSiempre revise el patrón generado, ya que mover un solo símbolo % cambia las filas que se devuelven.

Los asesores de consultas de IA leen la salida de EXPLAIN y señalan patrones de comodines iniciales que omiten los índices. Luego proponen alternativas como la búsqueda de texto completo, un patrón de prefijo o REGEXP, que aún debes validar con tus propios volúmenes de datos.

Resumir este post con: