SQL Server 2008查询编辑器改变查询逻辑

标签 sql sql-server sql-server-2008 ssms

我在 SQL Server 2008 中手工编写了一个简单的 SQL,如下所示;

从 Tab1 WHERE 中选择 * A='1' AND (B='1' OR C='1');

由于懒惰,我在查询编辑器中打开此查询来验证语法,然后在对话框中按“确定”,而不进行任何更改。

我注意到查询编辑器已将我的查询更改为:

SELECT * FROM Tab1 WHERE A='1' AND (B='1') OR (C='1');

显然,这会改变 SQL 的逻辑,并根据您执行的结果返回不同的结果。

我经常使用查询编辑器来验证复杂查询的语法。所以有点担心这样的微妙变化会被忽视,但却会改变结果。

这是设计师的特色吗?我可以做些什么来改变这种行为吗?

编辑:感谢您指出编辑器所做的更改与上面不太一样,但尽管结果相同,但仍然修改了查询。

谢谢

最佳答案

我尝试在查询设计器中复制此内容,但结果略有不同。我输入的内容与您相同:

SELECT * FROM Tab1 WHERE A='1' AND (B='1' OR C='1');

得到了这个:

SELECT     *
FROM         Tab1
WHERE     (A = '1') AND (B = '1') OR
                      (A = '1') AND (C = '1')

不得不说,结果是一样的,但我们都可以看到这里有一条危险路。另外,我不喜欢 (A = '1') 复制。哎呀,我想要我编码的代码!

明智之举:我从不在 SQL Server Management Studio 中格式化我的查询。您是否看到它对您的 View 代码做了什么?我恨它。我只是在其他地方编码并在完成后粘贴到短信中。

关于SQL Server 2008查询编辑器改变查询逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6508629/

相关文章:

mysql - WITH ROLLUP 结合多个 GROUP BY 条件

sql-server-2008 - sql server每日平均

mysql - 为行分配组号

获取汇总值的 SQL 查询

sql - 如何使 SQL 查询中的重复自定义表达式可维护

sql - 获取记录取决于它们的总和值

sql-server-2008 - 如何将源代码管理添加到sql server 2008?

sql - 我可以使用多个 "with"吗?

mysql - 如何在sql查询中使用min作为条件

java - 如何在java数组/列表中保存int和string列?