1 Empty Set和N/A
先讲Empty Set和 N/A,他们其实是一回事,MySQL中Empty Set是指当查询结果为空时,MySQL返回的结果集。
1.1 出现情况
一般情况下,由于一些特殊条件或错误,导致查询结果为空的情况时,就会返回Empty Set
比如如果table中不存在列名为column的列,那么查询结果就为空,MySQL就会返回Empty Set。
另外,在使用连接查询时,如果没有匹配的记录,也会返回Empty Set。
1.2 为什么会有Empty Set和N/A
他们只是相同查询结果的不同显示
同样一条查询语句
Empty Set出现在使用命令行来查询的时候,查询不到就会显示Empty Set
如果你使用Navicat,查询结果会看到有列的出现,显示的是N/A这个值,注意,这是没有数据的,连列什么都没有。
所以说N/A或者Empty Set是指结果集为空,NULL是指某个字段没有值,而空值一般指空字符串
因此在Navicat,你可能会看到查询的结果有列名,数据显示NULL,或者什么都没有,和N/A。
应该要注意空值和null都是有数据输出的,而(N/A)则是没有数据输出的。
2 null和空值的区别
他们之前的区别建议看这篇文章:MySQL中的空值、null和(N/A)区别
以下是一些摘要
通过之前的分析,我们知道,null和空值代表着有数据输出
内存区别
空值(‘’)的长度是0,是不占用空间的;
而的NULL长度是NULL,其实它是占用空间的。
查询的区别
查询null:使用函数isnull,注意isnull有不同形式
查询空值:则使用=’ ',两个引号中间是没有空格的
统计的区别
count(字段),若该字段在某一行的值为NULL,则该行不会被统计;
若该字段在某一行的值为空值,该行会被统计
count( * ):NULL会被统计
3 当没有数据输出N/A如何显示NULL
本质的思路:因为没有数据输出,也就是连列都没有,因此,我们可以给他一个列,那么这个列的值肯定是NULL
- 使用聚合函数对N/A进行处理,SUM/AVG/MAX/MIN都会返回null值。
SELECT sum(a),avg(a),max(a),min(a) FROM test
- select语句对空值进行处理
- 如果我们将整个语句放在from 后面 我们会发现查询出来的还是为 (N/A)
- 但是我们将这个语句放在select后面 查询出来就为null,相当于把这句话查询出来的结果作为一个列
select (select b from test where id = 32) as b
4 参考文献
MySQL中的空值、null和(N/A)区别
mysql empty set
来源地址:https://blog.csdn.net/joctas059/article/details/131614429