where 1=1

 

   现在通常可以看到 sql 语句中有这样的字眼 where 1=1 ,比如:

select * from tb_memeber where 1=1 and name=’you’ 这样写了 where 1=1 后有什么作用呢,写着表示条件永远为真,永远都可以查询出数据。这样做便于动态连接后续条件,在组合查询的时候用得很多:

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 两者都为空都可以查询。

如果不用这个 , 动态加条件 , 还要判断是否有 "where " 这个关键字 , 就比较麻烦了。

我们写程序时也会这么用,比如说:
select *from table where @IsNull(field1,strPrint("filed1=$",0))
如果 field1 等于空的,那 where 后面就没有条件了,势必会报错,所以加上 1=1

 

  通常最标准的写法就是 where 1=1 ,但是有时候也看到别人这样写 where 1 and ……

这样写操作 mysql 是可行的,但是在 Oracle 中是会报错的,笔者做过这个实验,所以还是按照最标准的方式来写,也就是 where 1=1

 

 

你可能感兴趣的:(oracle,sql,mysql)