0
是不是有什么毛病代码:SQL程序改变了我的代码
SELECT Konta.ID, Konta.Okres, Konta.Symbol, Konta.Nazwa
FROM ep15_opisie.dbo.Konta Konta
WHERE (LEN(Konta.Symbol)='5') AND (((Konta.Symbol Like '%221%') OR (Konta.Symbol Like '%222%') OR (Konta.Symbol Like '%302%') OR (Konta.Symbol Like '%700%'))
但我使用程序(Microsoft查询)更改代码:
SELECT Konta.ID, Konta.Okres, Konta.Symbol, Konta.Nazwa
FROM ep15_opisie.dbo.Konta Konta
WHERE (Konta.Symbol Like '%221%') AND (LEN(Konta.Symbol)='5') OR (Konta.Symbol Like '%222%') AND (LEN(Konta.Symbol)='5') OR (Konta.Symbol Like '%302%') AND (LEN(Konta.Symbol)='5') OR (Konta.Symbol Like '%700%') AND (LEN(Konta.Symbol)='5')
它乘以LEN论据。这对我来说没有意义,因为我希望所有的参数的LEN都是5,但是不同的Like'XXX')。我正在使用SQL Server。
什么是最好的方法只使用一个LEN参数?
只是问......是两个查询的结果不相似吗?因为该程序正在生成一个逻辑上等效的查询...您想要A AND(B或C或D);它打开括号并给你(A和B)或(A和C)或(A和D)和A。 – dev8080
请记住,与更多过程语言不同,没有保证条件的评估顺序或评估多少次相同子句(前提是它们是确定性的)。两个查询在逻辑上是相同的,优化器应该为任一个生成相同的计划。 (另外,如果这是查询或视图向导改变你的代码,简单的答案是停止使用可视化设计器,只使用普通的查询窗口 - 它们不会重新排列你的代码) –
是的,查询的结果是一样。我想要做的是减少代码的长度。如果我想包含第三个条件会怎么样?随着每个条件的增加,代码的长度将会爆炸。 – DJVarmian