好的。我终于创建了一个有效的视图:
SELECt TOP (100) PERCENT id, CAST(CASE WHEN IsNumeric(MyCol) = 1 THEN MyCol ELSE NULL END AS bigint) AS MyColFROM dbo.MyTableWHERe (MyCol NOT LIKE '%[^0-9]%')
感谢 AdaTheDev 和 CodeByMoonlight 。我用你的两个答案来解决这个问题。(当然也感谢其他回复者)
现在,当我加入其他bigint col或执行类似“ SELECt * FROM MyView where mycol =
1”的操作时,它将返回正确的结果,没有错误。我的猜测是,查询本身中的CAST导致查询优化器无法查看原始表,就像克里斯蒂安·海特(Christian
Hayter)所说的那样,可能会与其他视图一起使用



