Utilizar % y _ en una sentencia LIKE con SQL SERVER


Bueno cuando utilizamos la clausula LIKE para realizar búsquedas en una base de datos no podemos usar campantemente los caracteres ‘%’ y ‘_’ esto se complica un poco ya que los utilizamos generalmente como parámetros para configurar nuestra búsqueda.
Quiero dejarles una pequeña solución, ejemplo:

SELECT Nombre FROM Usuario Where  Nombre LIKE '%' + @VALOR + ‘%’


Si usamos este SELECT, indicamos que queremos todos los nombres de usuarios que empiecen o terminen por el @VALOR, si @VALOR llega con un ‘%’ o un ‘_’ este devolverá todos los registros lo cual sería un problema de seguridad y además una falla lógica del software.
Pues bueno lo que debemos hacer es usar la clausula ESCAPE para cuando se ingrese un ‘%’ o un ‘_’ , de la siguiente manera:

SELECT  Nombre  FROM  Usuario
WHERE Nombre LIKE '%\' + @ VALOR + '%' ESCAPE '\' OR
 Nombre LIKE '%_' + @ VALOR + '_%' ESCAPE '_'


Espero les sirva a todos, dejen el comentario si les sirvió. 🙂


Agradecimientos a: Camilo jaramillo

5 comentarios en «Utilizar % y _ en una sentencia LIKE con SQL SERVER»

  1. Está muy vacana la tesis, pero no se puede dejar de olvidar que las sentencias del WHERE solo dejan de funcionar cuando se está buscando en el search uno o más %. Es decir el escape en esta ocación omite el %. De resto todo right.

    Exitos……………..

  2. SIII !!!…iba muy bien la explicacion hasta el concepto o sentencia “ESCAPE”…que funcion cumple..o que hace.???…para que otro problema sirve utilizarlo.????

  3. Hola tengo una consulta que busca en un campo con varios nombres
    Sql = “SELECT * FROM Peliculas Where ” & sCampo & ” like ‘” & “%” + nValue + “%” & “%’ order by ” & sOrden & ” ” & AscDesC

    El problema es que si en el campo están los nombre Juan Anton, Juan antonino
    Me muestra los dos
    Hay alguna forma de que solo muestre el nombre buscado por ejemplo Juan Anton

Los comentarios están cerrados.