Inicio > SQL SERVER > Utilizar % y _ en una sentencia LIKE con SQL SERVER

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

Anuncios
  1. Milock
    enero 27, 2010 en 6:27 pm

    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. BRUJO
    julio 18, 2012 en 9:34 pm

    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. juan%escape%
    marzo 29, 2017 en 1:54 pm

    no se entiende una bosta

  4. Yetis
    agosto 7, 2017 en 1:24 pm

    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

  1. mayo 12, 2011 en 4:57 pm

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: