OK. W końcu stworzyłem widok, który działa:
SELECT TOP (100) PERCENT id, CAST(CASE WHEN IsNumeric(MyCol) = 1 THEN MyCol ELSE NULL END AS bigint) AS MyCol
FROM dbo.MyTable
WHERE (MyCol NOT LIKE '%[^0-9]%')
Dzięki AdaTheDev i CodeByMoonlight . Użyłem twoich dwóch odpowiedzi, żeby do tego dojść. (Oczywiście dzięki innym odpowiedziom)
Teraz, gdy łączy się z innymi bigint cols lub robię coś takiego jak 'SELECT * FROM MyView, gdzie mycol=1' zwraca poprawny wynik bez błędów. Domyślam się, że CAST w samym zapytaniu powoduje, że optymalizator zapytań nie patrzy na oryginalną tabelę, jak powiedział Christian Hayter, może być kontynuowany z innymi widokami