这两个查询工作正常:
select cast(sku as bigint) from bid
select cast(sku as bigint) from vwbidrecords
此查询失败,并显示消息“将数据类型varchar转换为bigint时出错。”
select * from bid where cast(sku as bigint) in
(select cast(sku as bigint) from vwbidrecords)
对于任何人来说,即使前两个没有问题,为什么第三个不能正常工作?
答案 0 :(得分:3)
你正在使用一个视图,我猜这个视图必须包含一些多表JOIN(将视图过滤到只有数字SKU)或至少一个带有WHERE子句的表。
它也很可能在视图查询中涉及一些ISNUMERIC测试。
查看此错误SQL Server should not raise illogical errors,解释原因
将数据类型varchar转换为bigint时出错。
会在您最不期望的时候提出。
的事实select cast(sku as bigint) from vwbidrecords
在它自己的工作上只意味着它与查询3的优化不同。检查两个执行计划,它将变得更加清晰。