码农知识堂 - 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
  • 相关阅读:
    区块链面临六大安全问题 安全测试方案研究迫在眉睫
    怎么写一个可以鼠标控制旋转的div?
    Jmeter压测工具和Docker服务端接口压测的安装使用详细教程
    动态规划:LeetCode第10题 正则表达式匹配
    Kotlin 协程二三事:挂起原理
    reportportal 集成 robotframework 自动化执行及结果可视化
    海思高校合作——QA培训资料
    Python-股票市场用于算法交易的人类反馈强化学习 (RLHF)
    基于Lang-Chain(ChatGLM和ChatChat)知识库大语言模型的部署搭建
    .net core 到底行不行!超高稳定性和性能的客服系统:性能实测
  • 原文地址:https://blog.csdn.net/white_night_SZTU/article/details/134043823
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号