Uso de comodines en sentencia con LIKE en Mysql

Al realizar una consulta sql utilizando LIKE, existen 2 comodines:

  • % Coincidencia de cualquier número de caracteres, incluso cero caracteres
  • _ Coincidencia exacta de un carácter

Para ejemplificar su uso, consideremos una tabla de usuarios donde tenemos 6 registros cuyos valores para el campo login son: ‘admin’, ‘admin1’, ‘admin2’, ‘admin_3’, ‘admin_4’ y ‘administrador’.

 

El primero de ellos (%), es el más conocido. Si ejecutamos:

mysql> SELECT * FROM usuarios WHERE login LIKE "admin%"

obtenemos los registros cuyo login comience con ‘admin’ y continúe con 0 o más caracteres. En nuestro caso: ‘admin’, ‘admin1’, ‘admin2’, ‘admin_3’, ‘admin_4’ y ‘administrador’ (todos los registros).

 

El segundo (_), funciona de manera similar y si ejecutamos:

mysql> SELECT * FROM usuarios WHERE login LIKE "admin_"

obtenemos los registros cuyo login comience con ‘admin’ y tenga un único carácter a continuación. En nuestro caso: ‘admin1’ y ‘admin2’ (requiere que exista un único carácter luego del texto ‘admin’).

 

Hasta aquí todo está claro, pero ¿qué sucede si quisiéramos obtener los registros cuyo login comience con ‘admin_’ (tienen un guión bajo luego del texto ‘admin’)?

Si planteamos la consulta así:

mysql> SELECT * FROM usuarios WHERE login LIKE "admin_%"

obtenemos los registros cuyo login comience con ‘admin’, tenga un carácter a continuación y luego 0 o más caracteres. En nuestro caso: ‘admin1’, ‘admin2’, ‘admin_3’, ‘admin_4’ y ‘administrador’.

 

Para poder utilizar los comodines dentro de un LIKE como si fueran simples caracteres (instancias literales), es necesario anteponerles el carácter de escape \:

mysql> SELECT * FROM usuarios WHERE login LIKE "admin_%"

así obtenemos los registros cuyo login comience con ‘admin’, tenga un guión bajo a continuación y luego 0 o más caracteres. En nuestro caso: ‘admin_3’ y ‘admin_4’.

Se puede definir otro carácter de escape en una consulta de la siguiente manera:

mysql> SELECT * FROM usuarios WHERE login LIKE "admin|_%" ESCAPE '|';
Tagged with: , ,
Publicado en Aplicaciones