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

TDengine 比较函数 NULLIF 用户手册

在这里插入图片描述

NULLIF

NULLIF 是一个条件判断函数:当首参与次参相等时返回 NULL,否则返回首参本身,用于屏蔽占位值或避免除零等异常情况。

项目说明
函数名称NULLIF
功能比较两个表达式;若 expr1 = expr2 则返回 NULL,否则返回 expr1
语法NULLIF(expr1, expr2)
参数expr1expr2:任意可比较类型,遵循隐式类型转换规则。
返回类型expr1 一致;当 expr1 = expr2 时结果为 NULL
适用范围普通表、超级表;支持 SELECT、WHERE、GROUP BY、PARTITION BY、窗口语句;可用于 ORDER BY。
产品支持TDengine、MySQL、PostgreSQL、SQL Server、Oracle、MariaDB、SQLite 等 ANSI SQL 实现

智能电表表结构
CREATE STABLE meters (ts TIMESTAMP,voltage FLOAT,current FLOAT,power FLOAT
) TAGS (groupid INT,location VARCHAR(64)
);

计算规则与返回说明
  1. 先按照数据库比较规则判断 expr1expr2 是否相等。
  2. 相等 ⇒ 返回 NULL;否则返回 expr1 的原值与类型。
  3. 支持在窗口或聚合内使用;比较结果为 NULL 的行会被聚合函数自动忽略。

常见使用示例(均基于智能电表场景)
  1. 避免除零错误:

    SELECTts,power / NULLIF(current, 0) AS load_resistance
    FROM meters
    WHERE location = 'Plant.A';
    

    当电流为 0 时返回 NULL,防止报错。

  2. 过滤无效标记:

    SELECTts,NULLIF(voltage, -9999) AS voltage_clean
    FROM meters
    WHERE groupid = 10;
    

    将异常占位值 -9999 转为 NULL,便于后续统计忽略。

  3. 结合窗口聚合:

    SELECT_wstart,AVG(NULLIF(power, -1)) AS avg_valid_power
    FROM meters
    WHERE location = 'Plant.B'
    INTERVAL(5m);
    

    每 5 分钟时间窗中,仅对真实功率计算平均值。


与 IFNULL 的对比
维度NULLIFIFNULL
触发条件expr1 = expr2 时返回 NULLexpr1 为 NULL 时返回备用值
常见用途把特定值映射为 NULL(如异常标记、除零保护)为 NULL 数据提供默认值(如缺测补 0)
返回类型expr1根据 expr1/expr2 兼容类型推导
在智能电表场景屏蔽异常读数、剔除重复标记、避免非法运算填补缺测、构造默认告警级别、保持统计口径
相同点都属于空值处理函数;输出可直接参与聚合或过滤

实际应用案例
  • 告警生成NULLIF(status, 0) 将 0 状态视作未知,辅助 IF/CASE 构造精准告警。
  • 能耗报表:在汇总功率时忽略异常占位值,保持统计准确。
  • 质量监控:与窗口函数配合,捕捉连续异常但避免因无效值干扰趋势。

关于 TDengine

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

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

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

相关文章:

  • SSM面试题学习
  • 网站建设练手项目我是做装修什么网站可以
  • Effective Python 第41条:考虑用mix-in类来表示可组合的功能
  • STM32独立看门狗IWDG与窗口看门狗WWDG知识梳理笔记
  • HTML-CSS-JS-入门学习笔记
  • 基于 MacOS 的Rokid 开发本地环境搭建指南
  • 以前的计算集群:Beowulf集群(贝奥武夫集群)
  • 软件开发中前端页面、后台管理页面、后端、数据中台的关系与开发流程
  • 政务微网站建设方案wordpress在线版本
  • TypeScript 循环
  • 【征文计划】JSAR实战:从零开始的空间小程序开发之旅
  • 用A4打印机1:1打印A3试卷(A3 pdf切割)
  • 知识体系_大数据框架环境搭建_虚拟机环境准备
  • 个人网站设计的参考文献网站建设制作解决方案
  • 《什么是Redis?》
  • soular入门到实战(4) - 如何通过工作台聚合TikLab所有工具链
  • 解决GitHub大文件推送错误:彻底清理PDB文件并配置.gitignore
  • 76、迁移飞浆PaddlePaddle的PP-LCNet_x1_0_doc_ori到onnx、mnn、ncnn、昇腾平台
  • 从“能看”到“看懂”:多模态大模型如何突破视觉理解的瓶颈
  • 【开题答辩全过程】以 爱之家线上动物救助站的设计与实现为例,包含答辩的问题和答案
  • 360搜索网站提交入口基于o2o的旅游网站建设
  • React Native:快速熟悉react 语法和企业级开发
  • Qwen-Audio:一种新的大规模音频-语言模型
  • 做教育网站宣传策略湖北三丰建设集团股份网站
  • 《Vuejs设计与实现》第 18 章(同构渲染)(上)
  • 【前端基础】20、CSS属性——transform、translate、transition
  • ChartStudio: New Chart Types Added for Enhanced Data Visualization
  • 测试用例设计万能公式:功能到安全
  • 做招投标应该了解的网站广州产品网站设计
  • Apache StreamPark 快速上手从一键安装到跑起第一个 Flink SQL 任务