わかった。私はついに機能するビューを作成しました:
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]%')
AdaTheDevに感謝します およびCodeByMoonlight 。私はこれに到達するためにあなたの2つの答えを使用しました。 (もちろん他の返信者にも感謝します)
これで、他のbigint列と結合したり、「SELECT * FROM MyView where mycol =1」のようなことをしたりすると、エラーなしで正しい結果が返されます。私の推測では、クエリ自体のCASTにより、クエリオプティマイザは元のテーブルを参照しません。これは、ChristianHayterが他のビューで実行されている可能性があると述べたためです