Vous devriez plutôt essayer de le caster explicitement en utilisant CAST
ou CONVERT
fonctionnent comme ci-dessous et ne comptez pas sur le casting implicite.
SELECT * FROM test WHERE sample_col = cast('foo' as int);
(OR)
SELECT * FROM test WHERE cast(sample_col as varchar) = 'foo';
De plus, cela ne sert à rien de comparer un INT
colonne de type avec string
value et AFAIK, il n'y a pas de tel paramètre pour arrêter la diffusion implicite. si vous voulez vraiment générer une erreur plutôt que de la convertir en 0, transmettez-la explicitement; dans ce cas, une erreur sortira.
Voir Conversion de type dans l'évaluation d'expression Pour plus d'informations.