SQL中where 1=1語句的作用
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
where 1=1有什么用?在SQL語言中,寫這么一句話就跟沒寫一樣。但是這看似多余的一條語句,卻有其獨特的用處。
select * from table1 where 1=1與select * from table1完全沒有區(qū)別,甚至還有其他許多寫法,1<>2,'a'='a','a'<>'b',其目的就只有一個,where的條件為永真,得到的結(jié)果就是未加約束條件的。 在SQL注入時會用到這個,例如select * from table1 where name='lala'給強行加上select * from table1 where name='lala' or 1=1這就又變成了無約束的查詢了。 最近發(fā)現(xiàn)的妙用在于,在不定數(shù)量查詢條件情況下,1=1可以很方便的規(guī)范語句。例如一個查詢可能有name,age,height,weight約束,也可能沒有,那該如何處理呢? String sql=select * from table1 where 1=1 為什么要寫多余的1=1?馬上就知道了。 if(!name.equals("")){ 如果不寫1=1呢,那么在每一個不為空的查詢條件面前,都必須判斷有沒有where字句,否則要在第一個出現(xiàn)的地方加where 今天看到:"SELECT * FROM strName WHERE 1 = 0"; 查詢得出答案: 該select語句主要用于讀取表的結(jié)構(gòu)而不考慮表中的數(shù)據(jù),這樣節(jié)省了內(nèi)存,因為可以不用保存結(jié)果集。 另外,這個用在什么地方呢?主要用于創(chuàng)建一個新表,而新表的結(jié)構(gòu)與查詢的表的結(jié)構(gòu)是一樣的。如下SQL語句: create table newtable as select * from oldtable where 1=0; 該文章在 2011/5/4 23:48:48 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |