我有一个查询要求将Varchar转换为INT。我目前没有发布查询本身,因为我不相信问题在那里。
我使用服务器SQL文件的备份在我的家用PC上设置查询。我在两台机器上都安装了Server 2008 R2。
查询在我的PC上运行100%,但在服务器上运行时将varchar转换为INT出错。
我猜有一个地方的设置是不一样的?我已经检查了区域设置,问题不存在。什么好主意吗?
问题在于如何计算查询。您无法保证查询的各个部分将以何种顺序进行求值,因此,在一台机器上,过滤器可能在转换之后发生,而在另一台机器上则可以这样做。或者WHERE子句条件可以以不同的顺序求值
SQL是声明性的,不是过程性的。使用SQL,您询问您想要什么,查询优化器会按照它认为合适的方式执行。在过程语言(c#, Java等)中,你可以控制执行顺序。
原因在这里有详细说明:为什么使用Select Top 100% ?