我想知道。以下两个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+'%'
我同时执行了两个语句并得到了结果。如果没有区别,那么写条件的更好方法是什么?
谢谢。
答案 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
。
道德:根据您的条件使用括号。它们可能并不总是必要的,但在你对布尔表达式感到满意之前,这是最好的方法。