sql中1=1和1=0的用處


where 1=1
where 1=1有什么用?在SQL語言中,寫這么一句話就跟沒寫一樣。

select * from table1 where 1=1與select * from table1完全沒有區別,甚至還有其他許多寫法,1<>2,'a'='a','a'<>'b',其目的就只有一個,where的條件為永真,得到的結果就是未加約束條件的。

在SQL注入時會用到這個,例如select * from table1 where name='lala'給強行加上select * from table1 where name='lala' or 1=1這就又變成了無約束的查詢了。

最近發現的妙用在於,在不定數量查詢條件情況下,1=1可以很方便的規范語句。例如一個查詢可能有name,age,height,weight約束,也可能沒有,那該如何處理呢?

String sql=select * from table1 where 1=1

 

為什么要寫多余的1=1?馬上就知道了。

if(!name.equals("")){
sql=sql+"name='"+name+"'";
}
if(!age.equals("")){
sql=sql+"age'"+age+"'";
}
if(!height.equals("")){
sql=sql+"height='"+height+"'";
}
if(!weight.equals("")){
sql=sql+"weight='"+weight+"'";
}

如果不寫1=1呢,那么在每一個不為空的查詢條件面前,都必須判斷有沒有where字句,否則要在第一個出現的地方加where

 

where 1=0

"SELECT * FROM strName WHERE 1 = 0";
不理解為什么有1=0?

查詢得出答案:

該select語句主要用於讀取表的結構而不考慮表中的數據,這樣節省了內存,因為可以不用保存結果集。

另外,這個用在什么地方呢?主要用於創建一個新表,而新表的結構與查詢的表的結構是一樣的。如下SQL語句:

create table newtableas select * from oldtablewhere 1=0;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM