【SQL的学习笔记】判空时赋值

SQL判空时赋值

SQL做统计查询时,经常需要在分组之后统计另一个字段的总数。这是往往会遇到COUNT(待统计字段)结果为NULL的情况。如果直接将结果NULL发送给调用者,对方会很难处理。于是需要在传出判断:若为空,则传0。

要实现这一功能,可使用ISNULL函数。

函数调用方式

ISNULL(需要进行判空的数值,希望判空时返回的值)

调用示例

表Class(AID,班级名称,班主任姓名)

AID Name HeadTeacher
1 高一一班 ……
2 高一二班 ……
3 高一三班 ……
4 高二一班 ……

表Student(AID,学生姓名,所在班级)

AID Name ClassAID
1 张三 1
2 李四 1
3 王五 1
4 张三 2
5 李四 2
6 王五 2
7 赵六 2

显然,Student表的ClassAID字段引用自Class表的AID字段,用以说明这个同学属于哪个班级

--这是一个统计查询:查询各个班都分别有多少学生
SELECT
	 [ClassAID] = C.AID
	,[StudentNumber] = COUNT(S.AID)
FROM Class AS C
JOIN Student AS S ON S.ClassAID = C.AID
GROUP BY C.AID
--上面这个查询会出现一个问题,倘若有一个班级没有任何学生,那么那个班级的‘学生数’就会被统计为NULL

结果会是这样的:

ClassAID StudentNumber
1 3
2 4
3 NULL
4 NULL

于是希望在结果为空的时候显示0而非NULL
代码如下:

--这是一个统计查询:查询各个班都分别有多少学生
SELECT
	 [ClassAID] = C.AID
	,[StudentNumber] = ISNULL(COUNT(S.AID),0)
FROM Class AS C
JOIN Student AS S ON S.ClassAID = C.AID
GROUP BY C.AID

如此,结果就是这样的:

ClassAID StudentNumber
1 3
2 4
3 0
4 0
发布了23 篇原创文章 · 获赞 1 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/shenjie_xsj/article/details/105215612