Недействительное преобразование SQL возвращает null вместо выдачи ошибки

У меня есть таблица со столбцом varchar, и я хочу найти значения, соответствующие определенному числу. Допустим, этот столбец содержит следующие записи (за исключением миллионов строк в реальной жизни):

123456789012
2345678
3456
23 45
713?2
00123456789012

Итак, я решил, что хочу, чтобы все строки с числовым значением 123456789012 записали оператор, который выглядит примерно так:

SELECT * FROM MyTable WHERE CAST(MyColumn as bigint) = 123456789012

Он должен возвращать первая и последняя строка, но вместо этого весь запрос взрывается, потому что он не может преобразовать «23 45» и «713? 2» в bigint.

Есть ли другой способ выполнить преобразование, которое вернет NULL для значений что не может преобразовать?

7
задан Bryce Wagner 4 November 2010 в 18:59
поделиться