我有一个要求将 Varchar 转换为 INT 的查询。我目前没有发布查询本身,因为我认为问题不存在。
我使用来自服务器 SQL 文件的备份在我的家用 PC 上设置了查询。我在两台机器上都安装了 Server 2008 R2。
查询在我的 PC 上运行 100%,但在服务器上运行时将 varchar 转换为 INT 时出错。
我猜某处的设置不一样?我检查了区域设置,问题不存在。有任何想法吗?
问题在于如何评估查询。您无法保证查询的哪些顺序部分将被评估,因此在一台机器上可能会在转换后发生过滤器,而在另一台机器上它可以这样做。或者可以以不同的顺序评估 WHERE 子句条件
SQL 是声明式的,而不是过程式的。使用 SQL,您可以询问您想要什么,而查询优化器会尊重它认为合适的方式。在过程语言(C#、Java 等)中,您可以控制执行顺序。
原因在此处进行了完整描述:为什么使用 Select Top 100 Percent?