SQL COUNT 统计 NULL 与空字符串 ‘‘ 差异(Oracle & Impala)

**摘要:**本文围绕 SQL 中 COUNT 函数对 NULL 与空字符串的统计差异展开,重点对比 Oracle 与 Impala/Hive 两类数据库的不同处理规则,并给出统计空值记录的具体 SQL 写法,最后结合金融监管 1104 报表校验场景说明实际应用要点。

核心结论

COUNT(字段名) 只统计字段不为 NULL 的数据 ,对空字符串''的识别逻辑随数据库不同而不同;COUNT(*) / COUNT(1) 统计整张表全部行数,不受 NULL、空字符串影响。

表格

数据库 COUNT (列名) 是否统计 NULL COUNT (列名) 是否统计 ''(空字符串) 核心特点
Oracle ❌ 不统计 ❌ 不统计 Oracle 特殊规则:空字符串 '' 等价于 NULL
Impala/Hive ❌ 不统计 ✅ 可以统计 严格区分 NULL(未知)和空字符串 ''(长度为 0 的字符串)

补充常量写法:COUNT(NULL) 结果永远返回 0;Oracle 中COUNT('')等价COUNT(NULL),结果同样为 0。

一、Oracle 场景(金融库常用)

Oracle 中空字符串''会隐式转换成 NULL,二者没有区别。

  1. COUNT(col):NULL 和''全都统计不到
  2. 统计字段为空(NULL / 空串)记录数量,两种写法:

sql

复制代码
-- 写法1:总条数减去非空条数,简洁推荐
SELECT COUNT(*) - COUNT(col) AS null_cnt FROM table_name;

-- 写法2:CASE求和,可读性强
SELECT SUM(CASE WHEN col IS NULL THEN 1 ELSE 0 END) AS null_cnt FROM table_name;

⚠️ Oracle 不要写 col = '' 判断空字符串,不会生效,统一使用 IS NULL。

二、Impala / Hive 场景(数仓离线计算)

Impala 严格区分NULL 和空字符串'',二者是两类数据:

  1. COUNT(col):能统计'',不能统计 NULL
  2. 分开统计:

sql

复制代码
-- 统计字段为NULL的行数
SELECT SUM(CASE WHEN col IS NULL THEN 1 ELSE 0 END) AS null_cnt FROM table_name;

-- 统计字段是空字符串''的行数
SELECT SUM(CASE WHEN col = '' THEN 1 ELSE 0 END) AS empty_str_cnt FROM table_name;

-- NULL 和空字符串合并统计
SELECT SUM(CASE WHEN col IS NULL OR col = '' THEN 1 ELSE 0 END) AS all_empty_cnt FROM table_name;

三、业务场景说明(适配监管 1104 报表校验)

在金融监管报送的数据质量校验中,经常需要核查业务字段空值(如客户证件号、借据编号):

  1. Oracle 业务库:直接使用 COUNT(*) - COUNT(字段) 即可统计全部空记录,不用额外判断空字符串;
  2. Impala 数仓层:必须同时判断 IS NULL 和 ='',否则会漏掉空字符串数据,造成指标校验、勾稽关系出错。

一句话背诵版

COUNT (列名) 忽略 NULL;Oracle 中空串等于 NULL,空串和 NULL 都统计不到;Impala 区分空串和 NULL,空串可以被 COUNT (列名) 统计,NULL 不行。COUNT (*) 统计全量行,不受空值影响。

相关推荐
无言听风雨丶22 分钟前
Redis 运维实战与排错
运维·数据库·redis
小天源2 小时前
智叟云集系统 · 架构与职责分层
服务器·前端·数据库
herinspace2 小时前
管家婆实用贴-SQL 2008如何修改成混合模式
服务器·数据库·sql·管家婆软件·财务软件·合肥管家婆软件
打螺丝的小李2 小时前
制造企业质量管理系统的三类产品形态:分别解决什么问题
数据库·制造
xixingzhe23 小时前
MySQL 锁表故障排查与处理
数据库·mysql
真上帝的左手3 小时前
30. 技术专题-‌应用框架组件-关系型数据库-MySQL-Mybatis
数据库·分布式·mysql·中间件·mybatis
为思念酝酿的痛3 小时前
MySQL表的连接
数据库·mysql
数字新视界3 小时前
机房动环监控系统在提升数据中心能效与安全中的应用探索
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
bksczm4 小时前
MySQL之存储引擎
数据库·mysql
大模型最新论文速读5 小时前
text-to-sql:从学术玩具到生产落地
数据库·sql