Mysql使用in查null值的解决方案,适用集合in

日常开发中可能会遇到需要在in里面添加null条件的需求。这个需求更多的使用在集合in查询需求中.

数据如下所示,

使用
SELECT * FROM user WHERE password in (‘44’,null)
这样是无法将zhangsan 这条数据查出来的

但使用ifnull就能够解决这个问题
SELECT * FROM user WHERE IFNULL(password,‘’) in (‘44’,‘’)

使用ifnull将Null值转换成 空串’’ 然后条件添加空串就能将null值查询出来

使用前提:
你的数据库中没有替换字符串的对应数据.即如果你数据库中包含有空串’'的数据,那么上述处理方案除了null值,正常空串数据也会查出来.

如果遇到上述情况,可以考虑替换其他字符串来查询null值,比如ifnull(exp,“(&^%)”)

TIP:
单个字段进行in条件 可以在添加一个 or xxx IS NULL
如果使用多个字段来进行集合IN查询。此时就用不了or,此时就适合使用ifnull来实现in条件查询null值数据
如下所示
SELECT * FROM user WHERE (user_name, IFNULL(password,‘’)) in ((‘zhangsan’,‘’))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值