本文主要參考 和
現在進入正題:
加入where 1=1,既是where 的條件成立,為永真,得到的結果就是未加約束條件的。為了動態sql中連線and條件。
where後面總要有語句,加上了1=1後就可以保證語法不會出錯!
假如後面確定有條件語句,就可以不用1=1;
不能確定where後面是否有語句的時候就要加上1=1了,當沒有其他條件語句時候,還有1=1,就不會輸錯了 。
例1:
sql="select * from table where 1=1 "&where_str
where_str是根據前面填入的得到的乙個串.這樣就不用管是否為空,都不會出現錯誤.就這點技巧了。
就是說:1=1永真條件,一般用於構造動態sql語句,"select ... from ... where 1=1 "+動態構造條件子句。
如果不寫1=1呢,那麼在每乙個不為空的查詢條件面前,都必須判斷有沒有where字句,否則要在第乙個出現的地方加where
if(!name.equals(""))
if(!age.equals(""))
if(!height.equals(""))
if(!weight.equals(""))
where 1=1的寫法是為了檢化程式中對條件的檢測
例2:打個比方有三個引數a, b, c
@sql=select * from tb'
這三個引數都可能為空
這時你要構造語句的話,乙個個檢測再寫語句就麻煩
比如if @a is not null
@sql=@sql + " where a=' + @a
if @b is not null
這裡你怎麼寫?要不要加where 或直接用 and ?,你這裡還要對@a是否為空進行檢測
用上 where 1=1 之後,就不存在這樣的問題, 條件是 and 就直接and ,是or就直接接 or
拷貝表 create table_name as select * from source_table where 1=1;
複製表結構 create table_name as select * from source_table where 1 <> 1;
例3:string sql = "select * from " + db_tablename + " where 1=1 and (name like '%" + condition + "%' " +
"or mobilephone like '%" + condition + "%' or familyphone like '%" + condition + "%' " +
"or officephone like '%" + condition + "%')" + strselection;
加上where 1=1 之後,就可以直接使用and 和or 語句了,不怕出現語法錯誤了~~~
深入理解where 1 1的用處
where 1 1有什麼用?在sql語言中,寫這麼一句話就跟沒寫一樣。select from table1 where 1 1與select from table1完全沒有區別,甚至還有其他許多寫法,1 2,a a a b 其目的就只有乙個,where 的條件為永真,得到的結果就是未加約束條件的。在...
T SQL中WHERE 1 1的作用
1 1或者 a a 等等恒等式是t sql中表達true的方法。因為在t sql中沒有true這樣的關鍵字或值,所以需要借助這些恒等式來表達true的概念。相對的,同樣可以使用1 1或者1 2等來表達false。在應用程式的安全性方面,使用這些式子是sql注入的基本原理,所以在拼接sql語句的時候要...
SQL中WHERE 1 1的作用
個人認為這篇文章寫的非常好,用例子把道理說的非常明白,所以轉了,希望對大家有所幫助。1 1或者 a a 等等恒等式是t sql中表達true的方法。因為在t sql中沒有true這樣的關鍵字或值,所以需要借助這些恒等式來表達true的概念。相對的,同樣可以使用1 1或者1 2等來表達false。在應...