我在 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/