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
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……………..
SIII !!!…iba muy bien la explicacion hasta el concepto o sentencia “ESCAPE”…que funcion cumple..o que hace.???…para que otro problema sirve utilizarlo.????
no se entiende una bosta
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