sql中1=2的含义

1.表达的含义

WHERE 后面表示过滤的条件,只有满足条件的记录才被选择,一般sql跟多个condition时,使用and作为组合,为了便于书写,条件最后会加入如1=2或者1=1的条件,原理如下所示

  1. 条件“1=2”为假,其实就是什么都不选择,查询不会返回数据,
  2. 如果条件是“1=1”就是选择所有记录。
where SequenceTime>=1731912007680000 AND SequenceTime<=1732054806953984 and 1=2//表示无结果
where SequenceTime>=1731912007680000 AND SequenceTime<=1732054806953984 and 1=1//返回根据第一个条件的结果’

2. 工程中的作用

2.1 1=1

where 1=1是为了后面的条件。这个SQL应该是在程序中拼出来的,程序中首先不能肯定后面的条件是否肯定会有,为了程序简单先加上where 1=1,后面的就可以直接拼接。如果不这样处理就需要在拼接后面的每一个条件时都要判断是不是where子句第一个条件,以决定是否要在前面加and
例:

  • 如果在不使用where 1=1的情况下
    String sql = “select * from table a”;
if(params.containsKey("name")){
    String key = params.get("name").toString();
    sql+="where a.name='"+key +"'";
}
if(params.containsKey("age")){
    String key = params.get("age").toString();
    sql+="where a.age='"+key +"'";
}
if(params.containsKey("class ")){
    String key = params.get("class ").toString();
    sql+="where a.class ='"+key +"'";
}

同时存在两个属性及以上是就会发生冲突,select * from table a where a.name=xxx where a.age=xxxxx 即一个错误的sql

  • 如果用where 1=1 的时候
    String sql = “select * from table a where 1=1”;
if(params.containsKey("name")){
    String key = params.get("name").toString();
    sql+=" and a.name='"+key +"'";
}
if(params.containsKey("age")){
    String key = params.get("age").toString();
    sql+=" and a.age='"+key +"'";
}
if(params.containsKey("class ")){
    String key = params.get("class ").toString();
    sql+=" and a.class ='"+key +"'";
}

2.2 1=2

where 1=2 是让记录集为空,因为只是用来插入一行,只需要得到表的各属性的数据类型即可。速度较快 因为它不用和表内任何字段比对

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值