SQL中where 1=1,where1<>1的作用 -杜小杰
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> ADP及SQL SERVER


SQL中where 1=1,where1<>1的作用

发表时间:2012/6/2 15:15:34 评论(3) 浏览(20316)  评论 | 加入收藏 | 复制
   
摘 要:“where 1=1 ”在Sql语句中有什么用?细想了下,有没有用以及有什么作用应该试情况而定。
 
从查询结果来说,因为这的1=1永远为真,所以有没有这一句,查询结果都一样的。
 
而对于开发者,如果检索条件不确定,即根据用户的画面输入追加检索条件时,这的“where 1=1”就非常有用。往简单说,它可以简化程序,免去繁琐的判断,提高程序效率。往复杂说呢,可以减轻程序员的开发负担,减少脑细胞的死亡数目,最大限度的提高工作效率。
 
正 文:

上例子:

①使用1=1

String sql =Select A.x,A.Y FROM table A Where 1=1;

StringBuffer sqlBuffer = new StringBuffer ;

sqlBuffer.append(sql);

如果画面有三个独立的可选输入项目l,m.n

if ( l != null ) {

sqlBuffer.append("and A.l = l");

}

if ( m != null ) {

sqlBuffer.append("and A.m = m");

}

if ( n != null ) {

sqlBuffer.append("and A.n= n");

}

这个是使用了“1=1”的用法,直接判断追加就行。

②不使用1=1,至少要有如下繁琐的判断

String sql =Select A.x,A.Y FROM table A ;

StringBuffer sqlBuffer = new StringBuffer ;

sqlBuffer.append(sql);

if (l != 空) {

sqlBuffer.append("where A.l = l");

} else {

if (m != 空) {

sqlBuffer.append("where A.m = m");

} else {

if (n != 空)

sqlBuffer.append("where A.n = n");

}

}

if (l != 空 and m != 空) {

sqlBuffer.append(" and A.m = m");

}else if (l != 空 and m != 空 and n != 空) {

sqlBuffer.append(" and A.n = n");

}

晕了吧,呵呵,我都要写晕了,为牺牲掉的脑细胞祈祷下。

每一个项目的追加都要判断前面的检索条件是否存在,以确定是否要“where”。一个晕乎可能还会有漏网之项。

有了上面的比较1=1的优势就比较明显了。小小的一点变通让你和你的程序不再繁琐~~O(∩_∩)O~~


Access软件网交流QQ群(群号:198465573)
 
 相关文章
mysql和SQLserver的区别  【麥田  2013/4/1】
sql2005与sql2008存储过程中 变量使用的一处区别  【smeyou  2013/4/3】
SQL Server 存储过程  【杜超-2号  2013/4/13】
常见问答
技术分类
相关资源
文章搜索
关于作者

杜小杰

文章分类

文章存档

友情链接