mysql ifnull不起作用原因分析以及解决
结论
有记录且该字段为null,则可以用ifnull转换,如果没有记录,则不能转换(因为本身就没有记录)
命令行运行的截图
可以看到:
查一条记录(id=8,实际上没有id=8的数据)
- 如果直接查字段(id),则会返回无记录,使用ifnull是没有用的,因为实际上本身就没有记录
- 如果查sum(id),虽然返回结果是null,但这确是真实存在的记录,使用infull可以对null结果进行转换
提示:
使用navicat等工具时,无记录和null显示基本是一样的,这就造成了混淆,可以看右下角(无记录、第1条记录)的区别
解决方案
返回结果为单行
ifnull不能转换的解决方案,一般ifnull不能转换就是因为本身是无记录,所以可以构造出有记录(该字段为null)的情况,从上面可以看出,一些函数(count、sum等)可以使无记录变成有记录
举例(适用返回结果为单行的情况)
比如,上面的例子,查询不到id返回0,像上面的第3条命令那样查询,还是没记录,解决方法,可以使用函数将字段包起来,构造出记录。
返回结果为单行单列
举例(适用返回结果为单行单列的情况)
如果能够保证返回结果为单行单列,可以在整体的返回结果外面包ifnull
最后
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
linux mysql5.5升级至mysql5.7的步骤与踩到的坑
这篇文章主要介绍了linux mysql5.5升级至mysql5.7的详细步骤,后面脚本之家小编为大家整理了多个补充,大家可以参考一下2021-01-01phpstudy中mysql无法启动(与本地安装的mysql冲突)的解决方式
这篇文章主要给大家介绍了关于phpstudy中mysql无法启动(与本地安装的mysql冲突)的解决方式,文中通过图文将解决的方法介绍的非常详细,需要的朋友可以参考下2022-09-09浅谈MySQL中授权(grant)和撤销授权(revoke)用法详解
下面小编就为大家带来一篇浅谈MySQL中授权(grant)和撤销授权(revoke)用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2016-09-09Mysql的Table doesn't exist问题及解决
这篇文章主要介绍了Mysql的Table doesn't exist问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-12-12
最新评论