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

Lea*_*ner 2 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+'%')
Run Code Online (Sandbox Code Playgroud)

SQL语句2

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

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

谢谢.

Gor*_*off 5

这两个条件不同:

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

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

第二个相当于:

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

也就是说,IsActive = 1只适用于Name比较而不是Code.

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