当前位置: 首页 > news >正文

TDengine 比较函数 IFNULL 用户手册

在这里插入图片描述

IFNULL

1. 函数概述

项目说明
函数名称IFNULL
功能判定首参是否为 NULL;若非 NULL 则返回首参,否则返回第二参数。
语法IFNULL(expr1, expr2)
返回类型expr1expr2 的可兼容类型推导(保持原类型精度)。
适用范围表与超级表,支持 SELECT、WHERE、GROUP BY、PARTITION BY、窗口语句;
支持版本TDengine TSDB v3.3.8.0 及以上

2. 参数说明

参数描述
expr1任意列、常量或表达式;若该参数不为 NULL,则直接作为函数结果返回。
expr2expr1 为 NULL 时的替代值;需与 expr1 具备类型兼容性。

3. 行为细则

  • expr1 非 NULL 时忽略 expr2,直接返回 expr1
  • expr1 为 NULL 时返回 expr2;若 expr2 亦为 NULL,则结果为 NULL。
  • 支持多种数值、字符串、时间戳及布尔类型组合;若类型不可兼容将报错。
  • 函数内部捕获除零等异常表达式并按 NULL 处理,例如 IFNULL(1/0, 10) 返回 10。

4. 智能电表表结构参考

CREATE STABLE meters (ts TIMESTAMP,voltage FLOAT,current FLOAT,power FLOAT
) TAGS (groupid INT,location VARCHAR(64)
);

5. 计算过程与返回值说明

  • TDengine 先计算 expr1,若得到非 NULL 值则直接输出;否则再计算 expr2 并返回其结果。
  • 返回列类型取两参数的公共类型(例如 INT 与 DOUBLE 推导为 DOUBLE;TIMESTAMP 保留时间戳类型)。
  • 在 GROUP BY / 窗口语句中按分组或窗口粒度逐行评估 IFNULL,结果只影响当前行。

6. SQL 示例与意义

-- 1) 填补电流缺失值,用 0 表示
SELECTts,IFNULL(current, 0) AS current_filled
FROM meters
WHERE location = 'East.Park';
-- 2) 在 WHERE 中替换 NULL,筛选功率超阈值
SELECT *
FROM meters
WHERE IFNULL(power, 0) > 5000;
-- 3) GROUP BY 下按区间汇总,把空电压计为 0
SELECTgroupid,SUM(IFNULL(voltage, 0)) AS total_voltage
FROM meters
PARTITION BY tbname;
-- 4) STATE_WINDOW 中改写缺失标签,保持窗口统计稳定
SELECTIFNULL(location, 'UNKNOWN') AS loc,SUM(power) AS segment_power
FROM meters
STATE_WINDOW(IFNULL(location, 'UNKNOWN'));

7. 常见场景

  • 数据清洗:将 NULL 电压、电流即时替换为 0 或标记字符串,方便实时看板。
  • 告警逻辑:在阈值判断之前用 IFNULL 消除缺测带来的误报。
  • 报表汇总:避免 SUM/AVG 因 NULL 拉低结果,保障能耗统计准确。
  • 窗口聚合:在 STATE/SESSION/INTERVAL 窗口中统一标签值,确保分组一致。
  • 多类型兜底:把 JSON/VARBINARY 之外的列转换为兼容类型后再替换默认值。

8. 常见错误与排查

问题处理建议
在 ORDER BY 中使用 IFNULL 导致语法错误改为子查询预先生成替用列,外层按该列排序。
expr1expr2 类型不兼容(如 GEOMETRY 与 INT)确保两参类型统一,必要时显式 CAST。
expr2 复杂表达式异常(如再触发除零)预先判断异常或改用 CASE,避免返回再次变为 NULL。
聚合上下文中混用列与聚合表达式导致分组错误将非聚合列加入 GROUP BY 或分层查询。

关于 TDengine

TDengine 是一款专为物联网、工业互联网等场景设计并优化的大数据平台,其核心模块是高性能、集群开源、云原生、极简的时序数据库。

它能安全高效地将大量设备每天产生的高达 TB 甚至 PB 级的数据进行汇聚、存储、分析和分发,并提供 AI 智能体对数据进行预测与异常检测,提供实时的商业洞察。

http://www.dtcms.com/a/446175.html

相关文章:

  • 【2026计算机毕业设计】基于jsp的毕业论文管理系统
  • 最小二乘问题详解3:线性最小二乘实例
  • OneData:数据驱动与AI落地的统一数据底座方法论——从规范到实践的全链路拆解
  • 与众不同的网站wordpress内容批量替换
  • 自己做网站要买什么微信制作网站设计
  • 笔记·线性回归(属于监督学习)
  • 同国外做贸易的网站怎么查看网站是用什么系统做的
  • 打印机专题
  • Vue 虚拟列表实现方案详解:三种方法的完整对比与实践
  • Oracle OCP认证考试题目详解082系列第48题
  • 第一章:单例模式 - 武林中的孤高剑客
  • sql题目基础50题
  • 哪些网站做的最好网站建设功能报
  • 第十三章:眼观六路,耳听八方——Observer的观察艺术
  • Kubernetes集群安全机制
  • 建站行业的发展趋势网站建设网络
  • AI大事记9:从 AlexNet 到 ChatGPT——深度学习的十年跃迁(下)
  • 网站收录了但是搜索不到全网霸屏推广系统
  • 张量分解 | CP / Tucker / BTD
  • 网站推广及建设ppt河北网站建设企业
  • 【数据结构】二叉搜索树的递归与非递归实现
  • 九亭镇村镇建设办官方网站1688接代加工订单
  • GJOI 9.27/10.3 题解
  • Python实例入门
  • 多线程核心知识点与高并发应用指南
  • 南宁网站建设nnxun政策变了2022二建有必要考吗
  • ASP3605电源芯片关键指标测试说明
  • Spring——事件机制
  • UMI企业智脑4.0与5.0的先进性之争,从“AI工具”到“孪生数字人”,赋能每个员工
  • 城乡建设查询网站网站维护包括