AskTable
免费试用

没有数据、值为空、结果为 0:AI 问数必须分清的三种情况

AskTable 团队
AskTable 团队 2026-08-12

“这家门店昨天退款多少?”

系统回答 0 元,可能表示确实没有退款;也可能是退款表没有同步、门店未营业、权限过滤后看不到记录,或者金额字段本身为空。

这些情况对业务决策完全不同。

NULL、0 和无记录不是一回事

  • 0:有明确观测,数值就是零;
  • NULL:存在记录,但该字段未知、不适用或尚未填写;
  • 无记录:筛选范围内没有任何行,原因仍需判断。

如果数据处理时把所有 NULL 都填成 0,AI 会把“未知”伪装成“确定没有”。

聚合函数的行为容易造成误解

SQL 聚合通常会忽略 NULL。PostgreSQL 文档指出,除 count 外,多数聚合在没有输入行时返回 NULL,而不是 0。SQL Server 的 COUNT(*) 统计行数,COUNT(字段) 则只统计非空值。

因此下面几个指标可能不同:

  • 订单总行数;
  • 已填写退款金额的订单数;
  • 退款金额总和;
  • 完全没有退款记录的门店数。

语义层需要明确每个指标的空值处理,而不是依赖查询引擎的默认行为。

先判断数据是否应该存在

AI 回答“没有数据”前,可以检查:

  • 数据源最近更新时间是否正常;
  • 门店当天是否营业;
  • 用户是否有查看该范围的权限;
  • 筛选条件是否过窄或维度值拼写错误;
  • 上游系统是否延迟、断流或尚未结算。

如果缺失是异常,应提示“数据尚未到达”而不是输出 0。

展示层可以友好,但不能篡改语义

页面上可以把某些空结果显示为“—”“暂无数据”或“0”,但必须按业务规则区分:

  • 库存为 NULL 可能表示尚未盘点;
  • 转化率为 NULL 可能因为分母为 0;
  • 新开门店没有同比基期,不应显示同比 0%;
  • 未发生退款可以显示 0 元;
  • 数据同步失败应显示异常提示。

结论

零是一个确定的业务值,NULL 是未知或不适用,无记录则是查询范围内没有事实。

AI 问数只有先判断“为什么没有”,再决定显示 0、空值还是异常,才能避免把缺失数据包装成确定结论。

参考来源

需要帮助规划你的企业AI转型?

从认知建立到落地陪跑,我们提供完整的企业AI服务

无论是刚开始评估AI,还是已经准备好落地,我们都能提供对应的支持