En ese punto lo más conveniente es restringir el ingreso de los valores a nivel aplicación. Es mucho más simple resolverlo de esa forma que quitarle flexibilidad a los motores de bases de datos.
Esto es: Si ese campo sólo va a tener números, entonces lo mejor es hacer que la aplicación sólo manipule números para esas consultas.
Para los programadores el criterio de flexibilidad que se aplica en los motores de bases de datos es un poco difícil de comprender, pero la idea central es que una base de datos debe responder consultas, no hacer validaciones que se trabajan en un nivel más alto; es por eso que el DBMS tolera ciertas cosas en pos de no impedir la ejecución de sentencias que son contextualmente válidas, aunque no estén redactadas con la precisión esperable.
Las validaciones de tipos de dato operan, en la base, no a nivel de datos entrantes, sino internamente: parámetros a stored procedures, triggers, functions, tablas, joins, índices, etc.
Para la validación de los datos enviados a las bases, están los conectores (.Net, java, etc), los que operan en la aplicación. A nivel de datos entrantes, lo que importa es la flexibilidad.
En resumen: Lo que debes tratar es de validar los datos ANTES de enviarlos a la base, ya que los DBMS están optimizados para consultas, no para reemplazar las capacidades de los lenguajes de programación.
Sugerencias:
Si vas a comparar datos numéricos con campos numéricos, no pongas los valores numéricos entre comillas. De esa forma si lo que entra es una cadena de caracteres sí se producirá un error. Esto:
Código sql:
Ver originalSELECT id, nombre FROM nodo WHERE departamento =aaaa ORDER BY id
te hubiese devuelto un error por campo no encontrado, en lugar de ejecutarse con corrección.
En su lugar, debería ir algo así:
Código sql:
Ver originalSELECT id, nombre FROM nodo WHERE departamento = 3 ORDER BY id
Que te devolvería un registro vacío si no existe el id=3.
Otro tip: Las fechas van en el formato 'yyyy-MM-dd', porque ese es el formato ANSI, si las quieres usar de otro modo hay que apelar a las funciones de fecha y hora de MySQL.