Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > ADP及SQL SERVER

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

时 间:2012-06-02 15:15:34
作 者:风行   ID:16058  城市:江阴
摘 要:“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交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助