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+"'";

这样方便很多,及时 usernamepassword 两者都为空都可以查询。

如果不用这个 , 动态加条件 , 还要判断是否有 "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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值