MySQL中对于where 1=1 where 1=0的使用

在开发中对于SQL使用where 1=1的优点是非常明显的。

原因是由于在实际开发中对于SQL的书写一般都是通过代码中的逻辑判断来进行SQL的拼接,主要拼接的位置是在where语句后面的判断筛选条件。

使用where 1=1的原因是这是一个永远成立的判断条件。

如果我们在SQL中没有使用where 1=1这个语句,那么在没有语句需要拼接的时候,SQL中就会多出一个关键词“where”,后面因为逻辑不符合所以全都没有进行拼接,就会出现类似的SQL:
 

select *from user where

然后后面都没有了,这个SQL就是错的,当然,通过代码的逻辑判断去最后进行该SQL的规范化也是可以的,但是明显会使开发变得复杂起来,还有很大的几率出现SQL的错误。那如果使用了where 1=1会是什么情况呢,如下所示:

select * from user where 1=1

该SQL本质上等价于

select * from user

所以SQL的安全性比较好

后面对于该SQL的继续拼接如下:

sqlStr="select * from user where 1=1";

if(age>20){

    sqlStr+="and user_age='age'";

}

else if(name="张三"){

    sqlstr+="and user_name='name'";

}

同理,where 1=0这个表达式永远为false,所以如下语句永远不会真正的去查询表中的数据,只用于快速返回当前表的结构(即获取表中的属性):

select * from user where 1=0;

 

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值