Foros del Web » Programando para Internet » ASP Clásico »

Diferencia entre LIKE y =

Estas en el tema de Diferencia entre LIKE y = en el foro de ASP Clásico en Foros del Web. Hola gente del web, tengo un problema con una consulta. Tengo una BD en SQL q tiene una tabla Tusuarios q contiene usuarios suscriptos con ...
  #1 (permalink)  
Antiguo 12/02/2007, 13:38
Avatar de gragus  
Fecha de Ingreso: diciembre-2005
Mensajes: 162
Antigüedad: 19 años, 3 meses
Puntos: 0
Pregunta Diferencia entre LIKE y =

Hola gente del web, tengo un problema con una consulta. Tengo una BD en SQL q tiene una tabla Tusuarios q contiene usuarios suscriptos con nombre de usuario y password correspondiente para poder acceder a una pagina. La consulta q realizo para saber si el usuario es correcto es la sgte:

Código:
consulta = "SELECT usuario, password FROM Tusuario WHERE usuario LIKE '%"&fusuario&"%' AND password LIKE '%"&fpass&"%'"
Si hago la comparación con LIKE no me devuelve sólo el usuario q coincide sino q devuelve todos los usuario q tienen datos semejantes, por ej. si tengo dos usuario con nombre gra y gragus y password 00 y 000, cuando intenta ingresar gra la consulta me devuelve los dos. Yo tenía entendido q si hago la consulta con = entonces si me iba a devolver sólo el usuario q coincidiera exactamente, pero al intentarlo el resultado es el mismo q con LIKE.

Entonces mi duda es la sgte., hay alguna forma de q la consulta me devuelva sólo el registro coincidente y no todos los q se parezcan??? Realmente hay diferencia entre LIKE y = o son lo mismo???

Saludos y gracias por su atención.
  #2 (permalink)  
Antiguo 12/02/2007, 13:46
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años
Puntos: 535
Re: Diferencia entre LIKE y =

LIKE e "=" no son lo mismo.

Cita:
Yo tenía entendido q si hago la consulta con = entonces si me iba a devolver sólo el usuario q coincidiera exactamente, pero al intentarlo el resultado es el mismo q con LIKE.
No puede ser. Tenés algo mal por allí, porque efectivamnete al usar el signo "=", le estás diciendo que te devuelva los registros que coincidan en su totalidad con el criterio dado. Como el nombre de usuario debe ser único, entonces si o si te debe devolver 1 solo registro.
__________________
...___...
  #3 (permalink)  
Antiguo 12/02/2007, 13:55
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 2 meses
Puntos: 98
Re: Diferencia entre LIKE y =

Solamente abundando un poco más, es posible que en efecto te esté regresando los mismos registros si es que tienes pocos usuarios, o uno nada más (el usuario de prueba), como dijo AZ, LIKE e = no es lo mismo, he visto esta confusión muchas veces por aquí:

LIKE -> (Cómo, parecido, similar) y depende de los comodines "%" que le pases a tu consulta.
= -> exactamente igual

Pero si tengo estos dos registros

Código:
usuario  |  pwd1
usuario  |  pwd2
Es posible que dependiendo de los comodines del LIKE, te traiga uno o los registros, en tanto que un criterio = solo te traerá aquellos que coincidan exactamente.

No se que tanta seguridad tenga la aplicación que estás desarrollando, pero sin duda, hacer una selección LIKE para un sistema de login, deja muchas puertas abiertas.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #4 (permalink)  
Antiguo 12/02/2007, 14:10
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años, 11 meses
Puntos: 47
Re: Diferencia entre LIKE y =

Cita:
Iniciado por gragus Ver Mensaje
Hola gente del web, tengo un problema con una consulta. Tengo una BD en SQL q tiene una tabla Tusuarios q contiene usuarios suscriptos con nombre de usuario y password correspondiente para poder acceder a una pagina. La consulta q realizo para saber si el usuario es correcto es la sgte:

Código:
consulta = "SELECT usuario, password FROM Tusuario WHERE usuario LIKE '%"&fusuario&"%' AND password LIKE '%"&fpass&"%'"
Si hago la comparación con LIKE no me devuelve sólo el usuario q coincide sino q devuelve todos los usuario q tienen datos semejantes, por ej. si tengo dos usuario con nombre gra y gragus y password 00 y 000, cuando intenta ingresar gra la consulta me devuelve los dos. Yo tenía entendido q si hago la consulta con = entonces si me iba a devolver sólo el usuario q coincidiera exactamente, pero al intentarlo el resultado es el mismo q con LIKE.

Entonces mi duda es la sgte., hay alguna forma de q la consulta me devuelva sólo el registro coincidente y no todos los q se parezcan??? Realmente hay diferencia entre LIKE y = o son lo mismo???

Saludos y gracias por su atención.

Hola... según lo que expones puedo suponer que el caracter '&' lo usas para concatenar strings. Tu sentencia resultante quedaría mas o menos así:

SELECT usuario, password FROM Tusuario WHERE usuario LIKE '%fusuario%' AND password LIKE '%fpass%'

Y es fácil de descifrar que el like te devuelva mas de un registro ya que estás utilizando el caracter '%' al inicio y al final del criterio de búsqueda.

Según los registros que describes, si tu query es:

SELECT usuario, password FROM Tusuario WHERE usuario='fusuario' AND password LIKE='fpass'

no produjera el mismo efecto. Asegurate de ejecutar el query correctamente
  #5 (permalink)  
Antiguo 12/02/2007, 20:59
Avatar de gragus  
Fecha de Ingreso: diciembre-2005
Mensajes: 162
Antigüedad: 19 años, 3 meses
Puntos: 0
Re: Diferencia entre LIKE y =

Primeramente gracias a los 3 por interesarse en mi consulta. Efectivamente el problema estaba en el comodín %, al sacarlo de la consulta y utilizar el = me devuelve sólo el registro q es exactamente igual. Por lo tanto la consulta correcta sería

Código:
consulta = "SELECT usuario, password FROM Tusuario WHERE usuario = '"&fusuario&"' AND password = '"&fpass&"'"
Ya q estoy quisiera hacerte otra pregunta u_goldman, en tu respuesta decís q el LIKE depende de los comodines "%" q le pase a la consulta, ¿hay otros comodines además de este?, y si es así ¿cuáles son y q significan?

Nuevamente muchas gracias y saludos...
  #6 (permalink)  
Antiguo 12/02/2007, 22:58
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 2 meses
Puntos: 98
Re: Diferencia entre LIKE y =

Hola gragus, este link te va a servir:

http://www.techonthenet.com/sql/like.php

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 13/02/2007, 09:09
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años
Puntos: 535
Re: Diferencia entre LIKE y =

Al usar "=" con "comodines"... ¿el signo igual funciona como si del LIKE se tratase?
__________________
...___...
  #8 (permalink)  
Antiguo 13/02/2007, 12:00
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 2 meses
Puntos: 98
Re: Diferencia entre LIKE y =

Cita:
Iniciado por Al Zuwaga Ver Mensaje
Al usar "=" con "comodines"... ¿el signo igual funciona como si del LIKE se tratase?
Te refieres a esto?

Código:
SELECT campos FROM tabla WHERE campo = '%valor'
La verdad que no se me ha ocurrido hacerlo, pero no creo ni siquiera que el motor de base de datos piense que estas usando algun comodin, yo creo que trataria de buscar el string %valor asi como esta.

Salud
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #9 (permalink)  
Antiguo 13/02/2007, 15:34
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años
Puntos: 535
Re: Diferencia entre LIKE y =

Cita:
Iniciado por u_goldman Ver Mensaje
Te refieres a esto?

Código:
SELECT campos FROM tabla WHERE campo = '%valor'
La verdad que no se me ha ocurrido hacerlo, pero no creo ni siquiera que el motor de base de datos piense que estas usando algun comodin, yo creo que trataria de buscar el string %valor asi como esta.

Salud

Claro, pero viendo esta respuesta...

Cita:
Iniciado por gragus Ver Mensaje
Primeramente gracias a los 3 por interesarse en mi consulta. Efectivamente el problema estaba en el comodín %, al sacarlo de la consulta y utilizar el = me devuelve sólo el registro q es exactamente igual. Por lo tanto la consulta correcta sería
saludos ;)
__________________
...___...
  #10 (permalink)  
Antiguo 13/02/2007, 22:56
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 2 meses
Puntos: 98
Re: Diferencia entre LIKE y =

Cita:
Iniciado por Al Zuwaga Ver Mensaje
Claro, pero viendo esta respuesta...



saludos ;)
Me parece que lo había interpretado diferente, es que andaba "Myakireando"
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #11 (permalink)  
Antiguo 14/02/2007, 11:27
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 1 mes
Puntos: 146
Re: Diferencia entre LIKE y =

Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:09.