码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • MySQL:IFNULL无法返回null的情况


    标签:Mysql, 数据库

    为什么当exp为”空“时,IFNULL(exp,null)无法返回null。

    前情提要

    什么情景下会发生该问题

    比如我们要找出一个表中只出现过一次的最大数字。如果没找到则返回NULL(Leetcode题目)。 又或者是找出某个不等于特定值的数,这个时候用IFNULL,很合理也很容易想到。

    比如我们要找出不等于0的数,如果没找到就返回NULL。

    1. SELECT IFNULL(num,null) AS num
    2. FROM MyNumbers
    3. WHERE num!=0

    However,这条SQL没用。你会发现返回的是空值,而不是null。这里为了方便直接复制leetcode的输出

    1. 输入
    2. MyNumbers =
    3. | num |
    4. | --- |
    5. | 0 |
    6. 输出
    7. | num |
    8. | --- |

    为啥呢?如果表中的所有数都等于0,那么按照SQL语句的执行顺序,FROM->WHERE->SELECT,在WHERE筛选后num不就为null了吗?为什么IFNULL无法返回后值null呢?

    为啥在WHERE之后就不生效了?先思考一下,WHERE筛选之后的结果集是NULL吗?

    如是。它真的是NULL吗?如是。WHERE筛选后确实没有匹配的记录,那它的结果集里面会有NULL吗?很明显不会,单纯就是啥都没有,即emptyset,空值的集合。

    而IFNULL是干什么的?对于IFNULL(exp,value)来说,当exp的结果为NULL,才会返回value。而不是当exp的结果为空值(N/A)时,返回value。

    要解决这个问题也很简单,加个聚合函数完事。最直接的就是加个MAX,MAX对emptyset计算,发现找不到任何一条记录,诶,那它就返回个NULL,完事。

    1. SELECT IFNULL(MAX(num),null)AS num
    2. FROM MyNumbers
    3. WHERE num!=0
  • 相关阅读:
    面试常问:HTTPS与HTTP的区别
    Zabbix监控系统 自定义监控项、自动发现与自动注册
    【VMware vSphere】搭建属于自己的 vSphere 实验环境(3)——Windows 系统安装与服务部署
    Hive 常见数据倾斜场景及解决方案(Map\Join\Reduce端)
    递归——深度优先搜索(DFS)——以滑雪问题为例(自顶而下)
    Linux下远程连接MySQL数据库的方法
    【树莓派】yolov5 Lite,目标检测,树莓派4B,推理v5lite-e_end2end.onnx,摄像头实时目标检测
    手动实现SpringMVC底层机制
    有源(AON)和无源(PON)光网络
    使用python快速将主机字节序转为网络字节序
  • 原文地址:https://blog.csdn.net/white_night_SZTU/article/details/134043823
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号