Buscar el tanto por ciento (%) en un LIKE de una SELECT

Hoy nos hemos encontrado con un caso curioso. Necesitabamos buscar en una tabla de la Base de Datos los textos que contuvieran el símbolo de tanto por ciento (%).

En un principio no parecía problemático... hasta que te pones a escribir la SELECT en SQL y pones:

SELECT * FROM MI_TABLA
 WHERE DESCRIPCION LIKE '%cosa%' ;

Como sabemos, esta consulta traería todos las filas que en descripción contenga la palabra 'cosa', en cualquier parte de su texto. Pero no queremos buscar 'cosa', queremos buscar el tanto por ciento (%).

¿Cómo ponerlo si ese símbolo es un carácter especial de la SQL que representa el comodín?. Rebuscando por internet, he encontrado la solución para buscar este carácter especial:

SELECT * FROM MI_TABLA
 WHERE DESCRIPCION LIKE '%!%%' ESCAPE '!';

Usando la clausula de ESCAPE puedes buscar caracteres que normalmente no los podrías buscar. Se pueden buscar cadenas de caracteres que incluyan uno o más caracteres comodín especiales. Para buscar el signo de porcentaje como un carácter, en lugar de buscarlo como un carácter comodín, hay que proporcionar la palabra clave ESCAPE y el carácter que queremos "ignorar". Si no pusieramos ese símbolo de exclamación y el ESCAPE '!', devolvería cualquier fila.

He puesto el símbolo de exclamación por poner un ejemplo, pero funcionaría exactamente igual si pusieramos cualquier otro caráctero. La cláusula ESCAPE ignorará ese carácter del LIKE y permitirá buscar el resto.

WHERE DESCRIPCION LIKE '%z%%' ESCAPE 'z';
Espero que os sirva como me ha servido a mi ;). Un saludo.

1 comentario:

  1. Muchas gracias, me ha venido muy bien. ME lo apunto en mi chuleta de cosas raras

    ResponderEliminar

Mi foto
Geek y Friki de amplio espectro pero de baja intensidad. Bloguero, forero y jugón online. Y Papá. Cada vez con menos tiempo para los hobbies.
Experto en PowerBuilder.
¿Te ha gustado? Haz un +1 en Google!

También te puede interesar...