Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/06/2009, 05:38
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 2 meses
Puntos: 2658
Respuesta: Error al comparar campos Mysql

No es un error. La conversión implícita de una cadena de caracteres que contenga letras a un formato numérico da como resultado cero(0), por lo tanto en realidad, MySQL está comparando el contenido de `departamento` con el valor cero (0).
Tal vez lo estés pensando desde la óptica de programación de aplicaciones o bien desde otro DBMS.
En el caso de MySQL, realiza conversiones contextuales entre lso dos miembros de las comparaciones o de las asignaciones.
En MySQL tu puedes asignar perfectamente una cadena a un DATETIME, por ejemplo, mientras la cadena contenga una fecha válida por formato. Así también, cuando asignas a un numero una cadena, en tanto lo único que contenga la cadena sean numeros.

Si quieres comprobar lo que digo, ejecuta esto y mira los resultados:
Código sql:
Ver original
  1. SELECT CAST('' AS UNSIGNED INT);
Código sql:
Ver original
  1. SELECT CAST('cccc' AS UNSIGNED INT);
Código sql:
Ver original
  1. SELECT CAST('12' AS UNSIGNED INT);
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)