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

Cómo utilizar un comodín SQL

El comodín de SQL nos permite filtrar los datos que coinciden con ciertos patrones en SQL. Utilizamos los comodines de SQL con el operador LIKE en la cláusula WHERE de una consulta para filtrar datos. En este artículo para principiantes, veremos todo lo que necesitas saber sobre los comodines básicos de SQL.

Si te gusta jugar a las cartas, sabrás que los comodines pueden sustituir a cualquier otra carta de la baraja. Del mismo modo, los comodines de SQL pueden sustituir uno o más caracteres.

Para empezar con nuestros comodines SQL, veamos una simple tabla customers para nuestra tienda de mascotas:

Comodín SQL con el operador LIKE

Imagina que ves a un cliente salir de una tienda de mascotas sin pagar su pedido. Estas cosas ocurren: simplemente se olvidó. Usted sabe que el vendedor de la tienda de mascotas tiene una base de datos de clientes, y le pregunta si sabe el nombre del cliente para poder extraer la dirección y hacer un seguimiento de él. Pero el vendedor no está seguro del nombre del cliente. Sabe que el nombre del cliente termina con dos letras osy que era corto, de sólo tres letras. Quizá fuera algo como Tos, Los, Kos, etc. Usando el poder de un comodín SQL, puede manejar una letra ambigua en su base de datos. Para representar un carácter, utilizamos el comodín SQL de guión bajo. Nuestra consulta en SELECT tiene este aspecto:

SELECT * FROM customers WHERE surname LIKE ‘_os’;

Ahora nuestra consulta nos devuelve todos los apellidos, y podemos omitir la escritura de la sentencia para cada combinación de palabras:

SELECT * FROM customers WHERE surname IN (‘Kos’,’Tos’,’Los’);

Tenga en cuenta que la lista de apellidos anterior no es en absoluto exhaustiva, ya que el comodín de subrayado sustituye a cualquier carácter, incluso a uno que no sea una letra.

Precaución: Uso de comodines SQL sin el operador LIKE

Los comodines SQL sólo funcionan con el operador LIKE. Si coloca un comodín dentro de una cadena ordinaria que no es un argumento para el operador LIKE, encontrará que SQL tratará ese comodín como un carácter literal que aparece en la cadena. Por ejemplo, considere esta consulta alternativa que no utiliza el operador LIKE:

SELECT * FROM customers WHERE surname = ‘_os’;

Esta consulta buscaría todos los apellidos que sean literalmente iguales a '_os', y puede apostar que no hay ningún registro de este tipo en nuestra tabla. Este es un error típico de los principiantes, por lo que hay que tener cuidado al utilizar los comodines de SQL.

Inversión de los filtros comodín de SQL

Para obtener la inversa de un filtro comodín SQL, como por ejemplo para encontrar todos los clientes cuyos apellidos no sean Los, Tos, Kos, etc., basta con aplicar una negación, NOT, al operador LIKE:

SELECT * FROM customers WHERE surname NOT LIKE ‘_os’;

Uso de comodines SQL para representar una colección de caracteres

El comodín del guión bajo no es el único disponible en SQL. Un comodín SQL más utilizado es el signo de porcentaje (%), que se usa para representar uno o más caracteres. Así, si quisiéramos listar todos los clientes que viven en ciudades alemanas que terminan en "burg", escribiríamos la siguiente consulta:

SELECT * FROM customers WHERE city LIKE ‘%burg’;

Esta consulta devolverá todos los registros de los clientes cuya ciudad de residencia sea como Hamburgo, Augsburgo, Oldenburgo, Duisburgo y otras.

Al igual que negamos el comodín SQL de subrayado, también podemos negar el comodín SQL de porcentaje. Así, si queremos extraer los registros de los clientes cuya ciudad de residencia no termine en 'burg', escribiríamos

SELECT * FROM customers WHERE city NOT LIKE ‘%burg’;

Nota: Evite utilizar el comodín de porcentaje al principio de una cadena con el operador LIKE, si es posible. Esta construcción es muy costosa, ya que la base de datos necesita evaluar cada combinación de cadenas que coincidan con ese patrón final. El uso de % después de algunos caracteres es menos costoso en términos de recursos informáticos, ya que la base de datos ya conoce el espacio de cadenas que necesita evaluar.

Combinación de comodines en las sentencias LIKE

Es importante tener en cuenta que se pueden combinar los comodines de SQL. Si desea buscar todos los clientes cuya ciudad de residencia empiece por "W", termine en "burg" y tenga al menos una letra entre la "W" y "burg", puede escribir:

SELECT * FROM customers WHERE city NOT LIKE ‘W_%burg’;

A lo loco con los comodines de SQL

En este artículo, vimos cómo usar comodines SQL para filtrar tablas. Aquí sólo hemos cubierto lo básico. Para aprender más sobre los comodines SQL, te recomiendo que aprendas sobre las expresiones regulares. Pero ten cuidado, porque hay un dicho en informática: Si tratas de resolver un problema usando expresiones regulares, terminarás con dos problemas. Las expresiones regulares son un tema avanzado, así que ten algo de experiencia antes de intentar dominarlas.