相关文章推荐
爱运动的打火机  ·  【Python】 已解决:ERROR: ...·  1 月前    · 
豪气的打火机  ·  nacos常见问题之开启鉴权后客户端报403 ...·  1 月前    · 
风流的开水瓶  ·  intellij idea ...·  1 月前    · 
聪明伶俐的小马驹  ·  Linux下DM达梦数据库导入导出dmp文件 ...·  2 周前    · 
坏坏的猴子  ·  sqlite ...·  10 小时前    · 
痴情的机器猫  ·  批处理 - 随笔分类 - 曼醉心 - 博客园·  1 年前    · 
面冷心慈的树叶  ·  【iOS开发】强制修改 iOS ...·  2 年前    · 
沉稳的绿豆  ·  android ...·  2 年前    · 
Code  ›  sql查询结果和预想的不一样?多半是"null"在作怪开发者社区
数据库
https://cloud.tencent.com/developer/article/1924788
绅士的机器人
2 年前
作者头像
浩说编程
0 篇文章

sql查询结果和预想的不一样?多半是"null"在作怪

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > Java经验之谈 > sql查询结果和预想的不一样?多半是"null"在作怪

sql查询结果和预想的不一样?多半是"null"在作怪

作者头像
浩说编程
发布 于 2021-12-24 19:47:03
668 0
发布 于 2021-12-24 19:47:03
举报

不知道兄弟们是否有同感

在写查询语句的时候我们通常不会刻意去考虑表中的”null“值

但有些时候对比查询结果和数据库又发现跟预想的不一样!

如果迟迟找不到原因那很有可能是"null"值搞的鬼

下面就让我们来一探究竟

注:以下情况针对于MYSQL数据库

01 null导致sum函数返回null而不是0

如果sum函数指定的字段在数据库中全部为null,那么sum函数将返回null,而非0

错误案例 :

我们先给定一个表数据

表名 | test

字段

name varchar

mark int

向表中插入一条数据

只给name赋值

mark为null

此时我们对mark求和

SELECT SUM(mark) FROM test

查询结果:

返回了null,这显然不符合我们的期望,

按照正常的逻辑,我们通常希望能返回0,此时我们可以使用 ifnull 函数来解决这个问题

修改之后的SQL:

SELECT IFNULL(SUM(mark),0) FROM test

返回了期望的查询结果:

02 null导致count函数遗漏统计数目

如果我们以某个可以为null的字段来统计count,那么就有可能遗漏统计数目

错误案例:

以上面的表数据为例

我们以mark字段来查询count值

SELECT COUNT(mark) FROM test

查询结果:

我们的表中是存在一条数据的,所以正常的返回结果应该是1,

但由于mark为null,所以就被遗漏了,返回了0。

修改方案也很简单,统计数目就用 COUNT(*) 即可!

修改之后的SQL:

SELECT COUNT(*) FROM test

返回了期望的查询结果:

03 判断null要用"is null",而非"= null"

如果我们的查询条件中涉及null判断,使用"="是无效的

错误案例:

依然以上面的表数据为例

我们查询mark为null的数据

SELECT * FROM  test WHERE mark = null

查询结果:

可以看到没有查询到数据,这是显然不正确的,所以我们应该用” is null “这种写法

修改之后的SQL:

SELECT * FROM  test WHERE mark is null

返回了期望的查询结果:

- THE END -

本文参与 腾讯云自媒体分享计划 ,分享自微信公众号。
原始发表:2021-12-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除
sql
数据库

本文分享自 浩说编程 微信公众号, 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

sql
数据库
评论
登录 后参与评论
0 条评论
热度
最新
登录 后参与评论
关于作者
浩说编程
亿达信息Java研发工程师
0
文章
0
累计阅读量
0
获赞
前往专栏
领券
  • 社区

    • 专栏文章
    • 阅读清单
    • 互动问答
    • 技术沙龙
    • 技术视频
    • 团队主页
    • 腾讯云TI平台
  • 活动

    • 自媒体分享计划
    • 邀请作者入驻
    • 自荐上首页
    • 技术竞赛
  • 资源

    • 技术周刊
    • 社区标签
    • 开发者手册
    • 开发者实验室
  • 关于

    • 社区规范
    • 免责声明
    • 联系我们
    • 友情链接

腾讯云开发者

扫码关注腾讯云开发者

扫码关注腾讯云开发者

领取腾讯云代金券

热门产品

  • 域名注册
  • 云服务器
  • 区块链服务
  • 消息队列
  • 网络加速
  • 云数据库
  • 域名解析
  • 云存储
  • 视频直播

热门推荐

  • 人脸识别
  • 腾讯会议
  • 企业云
  • CDN加速
  • 视频通话
  • 图像分析
  • MySQL 数据库
  • SSL 证书
  • 语音识别

更多推荐

  • 数据安全
  • 负载均衡
  • 短信
  • 文字识别
  • 云点播
  • 商标注册
  • 小程序开发
  • 网站监控
  • 数据迁移

Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有

深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569

腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287

问题归档 专栏文章 快讯文章归档 关键词归档 开发者手册归档 开发者手册 Section 归档

Copyright © 2013 - 2023 Tencent Cloud.

All Rights Reserved. 腾讯云 版权所有

登录 后参与评论
 
推荐文章
爱运动的打火机  ·  【Python】 已解决:ERROR: Could not install packages due to an OSError: [WinError 5] 拒绝访问。: ‘e:\anaconda\i
1 月前
豪气的打火机  ·  nacos常见问题之开启鉴权后客户端报403升级版本如何解决-阿里云开发者社区
1 月前
风流的开水瓶  ·  intellij idea 2024.1版本,通义灵码插件会影响粘贴代码后的格式化_问答-阿里云开发者社区
1 月前
聪明伶俐的小马驹  ·  Linux下DM达梦数据库导入导出dmp文件实战演示,dexp和dimp命令详细使用方法-阿里云开发者社区
2 周前
坏坏的猴子  ·  sqlite 合并两个数据库中的特定表_sqlite数据库合并
10 小时前
痴情的机器猫  ·  批处理 - 随笔分类 - 曼醉心 - 博客园
1 年前
面冷心慈的树叶  ·  【iOS开发】强制修改 iOS 状态栏颜色-腾讯云开发者社区-腾讯云
2 年前
沉稳的绿豆  ·  android 设置自动曝光,Android Camera2 API手动曝光更改(Android Camera2 API manual exposure change)..._weixin_39793708的博客-CSDN博客
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号