Seguramente ya sabrás que las consultas SELECT de SQL son muy potentes, y permiten realizar practicamente cualquier selección de datos inimaginable, sobretodo cuando tienes un dominio alto de todas las posibilidades de consultas SQL.
En este tutorial, para ayudarte a lograr más complejas y potentes, voy a explicar el operador LIKE de SQL.
Además, voy a mostrarte varios ejemplos sencillos de LIKE SQL que te ayudarán a entenderlo rápido.
¿Para qué sirve LIKE SQL?
El operador LIKE tiene el objetivo de comprobar condiciones de similitud para textos.
Combinandolo con distintos símbolos podremos seleccionar filas de una tabla por que cierta parte de un texto cumple una condición.
Ejemplos de uso de LIKE en SQL serían:
- Seleccionar todos los textos que incluyan una palabra. Esto es muy usado en buscadores web.
- Filtrar por un campo de texto que tenga al menos cierto número de caracteres.
- Realizar comprobaciones de ciertos patrones simples, si conoces las expresiones regulares (RegExp), decirte que sería algo similar, aunque mucho más sencillo.
¿Cómo se usa el operador LIKE en SQL?
Para utilizar el operador LIKE en las condiciones de tus consultas solo necesitas conocer 2 premisas:
- LIKE en SQL se usa junto a la cláusula WHERE.
- El operador LIKE se utiliza de forma similar a como lo harías con un IS de SQL o un "=", es decir, sigue la lógica de
columna OPERADOR valor.
A continuación un simple esquema de su uso:
SELECT col1, col2 FROM tabla WHERE col1 LIKE 'valor';
Como hemos dicho antes, el operador LIKE se debe utilizar con símbolos que permitan comprobar la similitud con un patrón concreto. A continuación te muestro los tipos de patrones existentes.
Símbolos de LIKE SQL
Ahora quiero enseñarte los símbolos que existen para operar con LIKE. En concreto existen 2 símbolos que nos permitiran formar distintas combinaciones:
- El símbolo % que significa 0 o más caracteres cualquiera.
- El símbolo _ que significa 1 caracter cualquiera.
Ejemplos de LIKE SQL
A continuación, y para terminar con este tutorial, voy a realizar varios ejemplos con un tabla que contenga la siguiente información:
id | Nombre | Apellidos |
---|---|---|
1 | Javier | López Ramirez |
2 | Lorena | Gutiérrez Rosada |
3 | Manuel | Gascón del bosque |
4 | Roberta | Álamo González |
LIKE con símbolo porcetaje %
Cómo he comentado antes, el caracter % simboliza cualquier caracter que se repita 0 o más veces.
Con ejemplos lo entenderás mucho mejor.
El siguiente ejemplo buscaría aquellos usuarios que su nombre empieza por "jav":
SELECT id, nombre, apellidos FROM usuario WHERE nombre LIKE 'Jav%';
Los resultados de esta consulta serían:
id | Nombre | Apellidos |
---|---|---|
1 | Javier | López Ramirez |
Ahora voy a seleccionar los usuarios cuyo apellido termina por "ez":
SELECT * FROM usuario WHERE apellidos LIKE '%ez';
Y el resultado de esta consulta con LIKE sería:
id | Nombre | Apellidos |
---|---|---|
1 | Javier | López Ramirez |
4 | Roberta | Álamo González |
Consulta para seleccionar los usuarios que su apellido contiene "mi":
SELECT * FROM usuario WHERE apellidos LIKE '%mi%';
Con resultado:
id | Nombre | Apellidos |
---|---|---|
1 | Javier | López Ramirez |
Ahora consulta con LIKE que obtiene aquellos usuarios los cuales sus apellidos contienen una L, una R, y una Z en este orden:
SELECT * FROM usuario WHERE apellidos LIKE '%L%R%Z%';
Y su resultado volvería a ser:
id | Nombre | Apellidos |
---|---|---|
1 | Javier | López Ramirez |
LIKE con símbolo barra baja _
Así como hemos visto antes que el símbolo porcentaje significaba la aparición de 0 o más caracteres cualquiera, la barra baja significa la aparición de 1 caracter sin especificar.
Por ejemplo, el siguiente SELECT con LIKE filtra todos aquellos usuarios que tengan un nombre con 6 letras:
SELECT * FROM usuario WHERE nombre LIKE '_____';
El resultado de este filtrado selectivo sería:
id | Nombre | Apellidos |
---|---|---|
1 | Javier | López Ramirez |
2 | Lorena | Gutiérrez Rosada |
3 | Manuel | Gascón del bosque |
Una vez visto este último ejemplo creo que puedes imaginarte el resto de combinaciones, como ya imaginaras no existe límites a la hora de compaginar un símbolo con otro, de forma que en una misma condición LIKE pueden aparcer tantos portentajes como barra bajas (underscore) quieras.
Debe saber también que una condición de WHERE puede contener múltiples LIKE con la misma o diferentes columnas sin problema. Siempre uniendolos con OR o AND al igual que harías con cualquier otra condición.