mysql 使用不等于 ‘< >’ 过滤 null 的问题

mysql 使用不等于 ‘< >’ 过滤 null 的问题

没有废话、直接上示例

drop table if exists testa;
create table testa(
    id int,
    time_status varchar(8)
);
insert into testa values (1,'25631001');
insert into testa values (2,null);
insert into testa values (3,'25631002');
insert into testa values (4,'25631002');
insert into testa values (5,'25631003');
  1. 如果给定我们的条件是 输出所有 time_status 不为 25631002 的所有值,我是用如下方式写的,如果你是搜到这边文章看的话,我相信你也是这样写的

    select * from testa where time_status <> '25631002';
    

    但是输出结果只有 id=1 和 id=5 的值,如下:

    mysql> select * from testa where time_status <> 25631002;
    +------+-------------+
    | id   | time_status |
    +------+-------------+
    |    1 | 25631001    |
    |    5 | 25631003    |
    +------+-------------+
    2 rows in set (0.00 sec)
    
  2. 处理方式

    • select * from testa where time_status <> 25631002 or time_status is null;

    • select * from testa where ifnull(time_status,'') <> 25631002;

      mysql> select * from testa where ifnull(time_status,'') <> 25631002;
      +------+-------------+
      | id   | time_status |
      +------+-------------+
      |    1 | 25631001    |
      |    2 | NULL        |
      |    5 | 25631003    |
      +------+-------------+
      3 rows in set (0.00 sec)
      

这是因为null空值,表示没有值,即不满足值不等于 25631002 的条件,所以会被剔除

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值