在SQL中And和(Condition1或Condition2)与And Condition1或Condition2之间是否有任何区别?

时间:2017-05-05 10:41:40

标签: sql sql-server where-clause

我想知道。以下两个SQL语句之间是否有任何区别。

SQL语句1

Select Id,Code,Name from tbl_student where IsActive=1 
       And (Name like '%'+@Searchtxt+'%' OR Code like '%'+@Searchtxt+'%')

SQL语句2

Select Id,Code,Name from tbl_student where IsActive=1 
       And Name like '%'+@Searchtxt+'%' OR Code like '%'+@Searchtxt+'%'

我同时执行了两个语句并得到了结果。如果没有区别,那么写条件的更好方法是什么?

谢谢。

1 个答案:

答案 0 :(得分:5)

这两个条件不同:

where IsActive=1 And
      (Name like '%'+@Searchtxt+'%' OR Code like '%'+@Searchtxt+'%')

where IsActive=1 And Name like '%'+@Searchtxt+'%' OR
      Code like '%'+@Searchtxt+'%'

第二个相当于:

where (IsActive=1 And Name like '%'+@Searchtxt+'%') OR
      (Code like '%'+@Searchtxt+'%')

也就是说,IsActive = 1仅适用于Name比较而非Code

道德:根据您的条件使用括号。它们可能并不总是必要的,但在你对布尔表达式感到满意之前,这是最好的方法。