Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

igualar a 0 una cadena devuelve un select *

Estas en el tema de igualar a 0 una cadena devuelve un select * en el foro de Mysql en Foros del Web. Hola, al realizar la siguiente operacion: Código: select count(*) from users where user="usuario" and password=0 devuelve 1. Que resulta ser el usuario "usuario", aunque su ...
  #1 (permalink)  
Antiguo 31/03/2010, 01:25
 
Fecha de Ingreso: marzo-2010
Mensajes: 6
Antigüedad: 14 años
Puntos: 0
Exclamación igualar a 0 una cadena devuelve un select *

Hola, al realizar la siguiente operacion:

Código:
select count(*) from users where user="usuario" and password=0
devuelve 1. Que resulta ser el usuario "usuario", aunque su password no es 0!!

He probado a realizar una select en varias tablas. Si pones cualquier campo texto igualado a 0 devuelve todas las filas. Es decir realizar la operacion:


Código:
select * from mitabla where campo_texto_o_varchar = 0
es lo mismo que hacer:

Código:
select * from mitabla
No se si es normal pero creo que esto deberia dar un error de tipos ya que no deberia ser lo mismo el numero 0 que la cadena '0'. Y si toma 0 como NULL o FALSE deberia devolver los campos que cumplen que son NULL o FALSE y no todos. Me parece un fallo importante.

Mi version de MySQL es la 5.1

Saludos!
  #2 (permalink)  
Antiguo 31/03/2010, 09:16
Avatar de ikaroraul  
Fecha de Ingreso: octubre-2006
Ubicación: La Paz
Mensajes: 391
Antigüedad: 17 años, 6 meses
Puntos: 16
Respuesta: igualar a 0 una cadena devuelve un select *

Mira lo que pasa es que estas comparando direcamente password=0

entonces como NO le indicas que 0 es CADENA pues si cumple la condicion... pues cualquier char pasado a DECIMAL es 0, sino prueba con esta consulta:

SELECT CONVERT(password,DECIMAL ) FROM users

saludos. y buena observacion :)

PD.: Fuente
__________________
Msn: [email protected]
  #3 (permalink)  
Antiguo 01/04/2010, 03:11
 
Fecha de Ingreso: marzo-2010
Mensajes: 6
Antigüedad: 14 años
Puntos: 0
Respuesta: igualar a 0 una cadena devuelve un select *

Es decir, que no hay manera de filtrar este caso en la bd?? Hay que hacerlo desde la aplicacion? o con un procedimento?

Etiquetas: bugs, fallos
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 18:28.