就是條件永遠(yuǎn)為真,查出所有數(shù)據(jù)來
在組合查詢條件時候多用:
String sql="select * from user where 1=1 ";
if(username!=null) sql=sql+ " and username='"+username+"'";
if(password!=null) sql=sql+ " and password='"+password+"'";
這樣方便很多,及時username,password兩者都為空都可以查詢
永遠(yuǎn)為真
主要是為了便于動態(tài)連接后續(xù)條件
有時候想查看一下表的字段就
select * from UB where 1=2,表示false 1=1表示true
-------------------------------------------
package StringTest;
public class Where {
/**
* 我用于高級查詢情況下
* @param args
*/ public static void main(String[] args) {
Where s=
new Where();
s.print("13432134321", "www.cjfuture.cn");
//null時,即為用戶沒有寫值
s.print(
null, "www.cjfuture.cn");
}
public void print(String mobile,String url){
StringBuffer sb =
new StringBuffer("select id from tab where 1 = 1 ");
//如果沒有1=1,下面的判斷語句會比現(xiàn)在寫復(fù)雜
if(mobile!=
null){
sb.append("and mobile = "+mobile);
}
if(url!=
null){
sb.append("and name = "+url);
}
System.out.println(sb.toString());
}
public void otherPrint(String mobile,String url){
StringBuffer sb =
new StringBuffer("select id from tab");
//如果沒有1=1,下面的判斷語句會比現(xiàn)在寫復(fù)雜,where放在哪里合適?
if(mobile!=
null){
sb.append("and mobile = "+mobile);
}
else{
sb.append("");
//如何寫?
}
if(url!=
null){
sb.append("and name = "+url);
}
else{
sb.append("");
//如何寫?
}
System.out.println(sb.toString());
}
}
*******************************************************************
[轉(zhuǎn)]sql語句中where 1=1的作用
2008-08-27 09:22
where 1=1
最近看到很多sql里用到where 1=1,原來覺得這沒用嘛,但是又想到如果沒用為什么要寫呢?于是在網(wǎng)上
查了查,在這里就淺談一下:
1=1 永真, 1<>1 永假。
1<>1 的用處:
用于只取結(jié)構(gòu)不取數(shù)據(jù)的場合
例如:
create table table_temp tablespace tbs_temp as
select * from table_ori where 1<>1
建成一個與table_ori 結(jié)構(gòu)相同的表table_temp,但是不要table_ori 里的數(shù)據(jù)。(除了表結(jié)構(gòu),其它結(jié)
構(gòu)也同理)
1=1的用處
用于動態(tài)SQL
例如 lv_string := 'select tbl_name,tbl_desc from tbl_test where 1=1 '||l_condition;
當(dāng)用戶選擇了查詢的名稱'abc'時l_condition :='and tbl_name = ''abc'''';但是當(dāng)用戶沒有
選擇名稱查詢時l_condition就為空 這樣 lv_string = 'select tbl_name,tbl_desc from tbl_test
where 1=1 ' ,運(yùn)行也不會出錯,相當(dāng)于沒有限制名稱條件。但是如果沒有1=1的條件,則lv_string =
'select tbl_name,tbl_desc from tbl_test where ';這樣就會報(bào)錯。
除了1=1 或1<>1之外的其它永真永假的條件同理。
來源:
http://hi.baidu.com/jzg7366/blog/item/e59dbaec8d33a5d42e2e210a.html