网站首页 > 知识剖析 正文
不知道兄弟们是否有同感
在写查询语句的时候我们通常不会刻意去考虑表中的”null“值
但有些时候对比查询结果和数据库又发现跟预想的不一样!
如果迟迟找不到原因那很有可能是"null"值搞的鬼
下面就让我们来一探究竟
注:以下情况针对于MYSQL数据库
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
返回了期望的查询结果:
兄弟们学习的同时别忘了点赞分享哦!我会感动到哭
null导致count函数遗漏统计数目
如果我们以某个可以为null的字段来统计count,那么就有可能遗漏统计数目
错误案例:
以上面的表数据为例
我们以mark字段来查询count值
SELECT COUNT(mark) FROM test
查询结果:
我们的表中是存在一条数据的,所以正常的返回结果应该是1,
但由于mark为null,所以就被遗漏了,返回了0。
修改方案也很简单,统计数目就用COUNT(*)即可!
修改之后的SQL:
SELECT COUNT(*) FROM test
返回了期望的查询结果:
判断null要用"is null",而非"= null"
如果我们的查询条件中涉及null判断,使用"="是无效的
错误案例:
依然以上面的表数据为例
我们查询mark为null的数据
SELECT * FROM test WHERE mark = null
查询结果:
可以看到没有查询到数据,这是显然不正确的,所以我们应该用”is null“这种写法
修改之后的SQL:
SELECT * FROM test WHERE mark is null
返回了期望的查询结果:
今天我们探讨了null值对查询结果造成偏差的三种情况
有用的话兄弟们记得点赞收藏支持一下哦!
更多编程资料、电子书、安装包在我同名公众号“浩说编程”中已经为兄弟们准备好啦,欢迎来撩!
猜你喜欢
- 2024-12-04 从零开始学SQL数据分析,SQL数据清洗
- 2024-12-04 C#中使用FreeSql分表查询的实现及bug
- 2024-12-04 SQL 基础学习插入数据(十三)
- 2024-12-04 利用VBA+SQL查询Excel工作表数据(条件查询)
- 2024-12-04 初学者最热门和棘手的10个T-SQL问题
- 2024-12-04 神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程
- 2024-12-04 数据库基础 数据查询语言 初学者一定要掌握这些SQL查询语句
- 2024-12-04 20个数据分析师必知必会的SQL查询语句
- 2024-12-04 SQL查询排序如何将null值排到最后
- 2024-12-04 一文讲懂SQL条件语句 IF函数
- 最近发表
-
- PHP 8新特性之Attributes(注解),你掌握了吗?
- PHP + Redis 高并发轮盘抽奖系统实现
- PHP设计模式之原型模式(php 模型)
- php8 throw 表达式使用教程(php表达式的定义)
- php8 枚举使用教程(php枚举类型)
- GIMP 教程:如何创建照片文字效果(gimp怎么修改图片上的数字)
- 分享几个漂亮的宇宙风格的按钮动画效果,让你喜欢上CSS
- 一次示范就能终身掌握!让手机AI轻松搞定复杂操作丨浙大vivo出品
- Shanghai supports exporters' pivot as US tariffs hit trade flows
- 如何早期识别「快速进展性痴呆」?这些独特的特征可能提供重要线索 | AAN 2025
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)