По-скоро трябва да опитате да го кастнете изрично чрез CAST
или CONVERT
функция като по-долу и не разчитайте на имплицитно кастинг.
SELECT * FROM test WHERE sample_col = cast('foo' as int);
(OR)
SELECT * FROM test WHERE cast(sample_col as varchar) = 'foo';
Освен това няма смисъл да се сравнява INT
тип колона с string
стойност и AFAIK, няма такава настройка, която да спре имплицитното кастинг. ако наистина искате да доведете до грешка, вместо да я преобразувате в 0, тогава я преобразувайте изрично; в който случай ще излезе грешка.
Вижте Преобразуване на тип при оценка на израз За повече информация.