sql server更改了我的where子句

时间:2014-09-24 09:57:09

标签: sql sql-server sql-server-2008

你好我正在尝试用这样的where条件构建一个查询

  

WHERE(dbo.Dosje.gjendja = 2)AND(dbo.Bashko.id IS NULL或dbo.Dosje.uniqueCode<> CONVERT(varchar(20),dbo.Dosje.qyteti +'_'+ dbo .Bashko.kodiDytesor))

这样的条件就像这个A和(B或C)一样,它通常可以转化为 (A和B)或(A和C)

但奇怪的是,当我尝试保存或执行这样的

时,sqlserver会转换我的where子句
  

WHERE(dbo.Dosje.gjendja = 2)AND(dbo.Bashko.id IS NULL)或                         (dbo.Dosje.gjendja = 2)AND(dbo.Dosje.uniqueCode<> CONVERT(varchar(20),dbo.Dosje.qyteti +'_'+ dbo.Bashko.kodiDytesor))

这是不一样的逻辑。这是(A和B或A和C)。这是不一样的逻辑,为什么sql server会改变我的查询?

1 个答案:

答案 0 :(得分:0)

这是相同的逻辑。 AND运算符的优先级高于OR运算符,因此始终首先对其进行求值。 A和B或A和C (A和B)或(A和C)相同。