基础-NULL的处理

NULL的处理往往是查询过程的处理重点,本文探讨一些可能的情况

1.NULL的特性

# NULL与任何值比较或运算的结果都是NULL,包括其本身
SELECT 1>NULL;# NULL
SELECT 1+NULL;# NULL
SELECT NULL=NULL;# NULL
# NULL的判定必须使用IS NULL或IS NOT NULL
SELECT NULL IS NULL;# 1

2.聚合函数中的NULL

# 聚合函数默认忽略NULL

# 假定colname列中存在NULL
SELECT COUNT(colname) FROM tbname;# 返回不包含NULL的总数
SELECT AVG(colname) FROM tbname;
SELECT SUM(colname)/COUNT(colname) FROM tbname;# 等价于上行查询

# 假定colname列中存在NULL,NULL视为0,求colname的平均值
SELECT AVG(IF(colname IS NULL,0,colname)) FROM tbname;
SELECT SUM(colname)/COUNT(*) FROM tbname;# 等价于上行查询

# 假定colname列中存在NULL,求NULL的个数
SELECT SUM(colname IS NULL) FROM tbname;

# 假定colname列全为NULL,聚合函数的结果
SELECT COUNT(colname) FROM tbname;# 返回0
SELECT MAX(colname) FROM tbname;# 返回NULL

# 假定colname1列存在NULL,求colname1列NULL值对应记录的colname2列的平均值
SELECT AVG(IF(colname1 IS NULL,colname2,NULL)) FORM tbname;

# 假定colname1列存在NULL,按colname1是否为NULL分组求colname2列的总和
SELECT 
	IF(colname1 IS NULL,'NULL汇总','其他汇总') AS group_name,
	SUM(colname2) 
FROM tbname 
GROUP BY 
	IF(colname1 IS NULL,'NULL汇总','其他汇总');

3.联接中的NULL

未完待续

4.相关题目

简单查询:SQL10 用where过滤空值练习

涉及联接:SQLW3 分析客户逾期情况

涉及联接:SQL34 统计复旦用户8月练题情况

更多知识见专栏

#SQL菜鸟#
MySQL的使用 文章被收录于专栏

由于专栏功能问题造成阅读不便,本专栏放弃更新,所有内容将迁移到计算机编程合集专栏下

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务