这两个查询可以正常工作:
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)
对于任何人来说,为什么第三个不能工作,即使前两个很好?
您正在使用的视图,我猜必须涉及一些多表JOIN(将视图过滤为仅数字sku)或至少具有WHERE子句的单个表。
也很可能在视图查询中涉及一些ISNUMERIC测试。
检查这个错误SQL Server不应该引发不合逻辑的错误,这解释了为什么
将数据类型varchar转换为bigint错误。
会在你最意想不到的时候被触发。
select cast(sku as bigint) from vwbidrecords
单独工作只意味着它对查询3进行了不同的优化。检查两个执行计划,会更清楚。