Bootstrap

SQL小知识和sql语句中where 1=1的作用

目录

文章目录

前言

一、where条件语句永远为真

二、拼接多个约束条件的语句(常用)

总结



前言

朕在数据访问层(DAL)的代码中经常能见到的查询语句,在后面加约束条件的时候都有带上where 1=1。那么它的作用 是什么呢?查阅资料后,朕决定片面总结一下。

StringBuilder strSql = new StringBuilder();
strSql.Append("select * from(select * from cxk where 1=1");

一、where条件语句永远为真

在不需要加条件的时候,加不加where 1=1 的语句作用是一样的,虽然加上where1=1条件,但是因为where1=1作用使条件语句永远为真,那实际上和不加约束条件是一模一样的。

select * from cxk where 1=1;
//上面的语句where条件永远为真,相当于不加约束条件,两条语句结果是一样的。
select * from cxk;


二、拼接多个约束条件的语句(常用)

当需要用到多个约束条件的时候,where1=1 就派上用场了。

  • 首先是不加where1=1 的时候,后面需要拼接约束条件语句时,可能会出现SQL语句语法错误↓
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语句在语法上有错误。

  • 那么在上述的条件语句拼写时,加上where 1=1,即可连接语句且不会有语法错误。

代码如下:

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语句,特别是在需要拼接多个约束条件的时候,作用更明显。


总结

还有一些常见的数据库小知识,朕也总结一下

  1. 如下,在表名后加t后,可用t指代表TABLE。
  2. LIKE 和 % 用于模糊查询
"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

;