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 originalSELECT CAST('cccc' AS UNSIGNED INT);