赞
踩
目录
朕在数据访问层(DAL)的代码中经常能见到的查询语句,在后面加约束条件的时候都有带上where 1=1。那么它的作用 是什么呢?查阅资料后,朕决定片面总结一下。
- StringBuilder strSql = new StringBuilder();
- strSql.Append("select * from(select * from cxk where 1=1");
在不需要加条件的时候,加不加where 1=1 的语句作用是一样的,虽然加上where1=1条件,但是因为where1=1作用使条件语句永远为真,那实际上和不加约束条件是一模一样的。
select * from cxk where 1=1;
//上面的语句where条件永远为真,相当于不加约束条件,两条语句结果是一样的。
select * from cxk;
当需要用到多个约束条件的时候,where1=1 就派上用场了。
- StringBuilder strSql = new StringBuilder();
- strSql.Append("select * from CXK where ");
- if (!string.IsNullOrWhiteSpace(hair))
- {
- strSql.Append("and HAIR='");
- strSql.Append(hair);
- strSql.Append("'");
- }
比如这样得到的语句:(假设参数hair的值为中分)"select * from CXK where and HAIR='中分'";
得到的SQL语句在语法上有错误。
代码如下:
- strSql.Append("select * from CXK where 1=1");
- if (!string.IsNullOrWhiteSpace(hair))
- {
- strSql.Append("and HAIR='");
- strSql.Append(hair);
- strSql.Append("'");
- }
输出语句为:"select * from CXK where 1=1 and HAIR='中分'";
所以,这里1=1的作用就是为了方便拼接SQL语句,特别是在需要拼接多个约束条件的时候,作用更明显。
还有一些常见的数据库小知识,朕也总结一下
"select t.* from TABLE t where t.num like '%"+number+"%'";
3.倒(降)序排列,在条件后加上 order by 列名 desc
升序排列:order by 列名 asc
select * from RECORD t where 1=1 order by t.id desc
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。