TDengine 支持的所有运算符

简介

TDengine 在表达式中可以支持各种运算符,JSON 运算是比较特殊的一种运算符

算术运算符

# 运算符 支持的类型 说明
1 +, - 数值类型 表达正数和负数,一元运算符
2 +, - 数值类型 表示加法和减法,二元运算符
3 *, / 数值类型 表示乘法和除法,二元运算符
4 % 数值类型 表示取余运算,二元运算符

位运算符

# 运算符 支持的类型 说明
1 & 数值类型 按位与,二元运算符
2 | 数值类型 按位或,二元运算符

JSON 运算符

-> 运算符可以对 JSON 类型的列按键取值。-> 左侧是列标识符,右侧是键的字符串常量,如 col->'name',返回键 'name' 的值。

集合运算符

集合运算符将两个查询的结果合并为一个结果。包含集合运算符的查询称之为复合查询。复合查询中每条查询的选择列表中的相应表达式在数量上必须匹配,且结果类型以第一条查询为准,后续查询的结果类型必须可转换到第一条查询的结果类型,转换规则同 CAST 函数。

TDengine 支持 UNION ALLUNION 操作符。UNION ALL 将查询返回的结果集合并返回,并不去重。UNION 将查询返回的结果集合并并去重后返回。在同一个 SQL 语句中,集合操作符最多支持 100 个。

比较运算符

# 运算符 支持的类型 说明
1 = 除 BLOB、MEDIUMBLOB 和 JSON 外的所有类型 相等
2 <>, != 除 BLOB、MEDIUMBLOB 和 JSON 外的所有类型,且不可以为表的时间戳主键列 不相等
3 >, < 除 BLOB、MEDIUMBLOB 和 JSON 外的所有类型 大于,小于
4 >=, <= 除 BLOB、MEDIUMBLOB 和 JSON 外的所有类型 大于等于,小于等于
5 IS NOT NULL 所有类型 是否为空值
6 NOT BETWEEN AND 除 BOOL、BLOB、MEDIUMBLOB、JSON 和 GEOMETRY 外的所有类型 闭区间比较
7 IN 除 BLOB、MEDIUMBLOB 和 JSON 外的所有类型,且不可以为表的时间戳主键列 与列表内的任意值相等
8 NOT IN 除 BLOB、MEDIUMBLOB 和 JSON 外的所有类型,且不可以为表的时间戳主键列 与列表内的任意值都不相等
9 LIKE BINARY、NCHAR 和 VARCHAR 通配符匹配所指定的模式串
10 NOT LIKE BINARY、NCHAR 和 VARCHAR 通配符不匹配所指定的模式串
11 MATCH, NMATCH BINARY、NCHAR 和 VARCHAR 正则表达式匹配
12 CONTAINS JSON JSON 中是否存在某键

LIKE 条件使用通配符字符串进行匹配检查,规则如下:

  • '%'(百分号)匹配 0 到任意个字符;'_'(下划线)匹配单个任意 ASCII 字符。
  • 如果希望匹配字符串中原本就带有的 _(下划线)字符,那么可以在通配符字符串中写作 _,即加一个反斜线来进行转义。
  • 通配符字符串最长不能超过 100 字节。不建议使用太长的通配符字符串,否则将有可能严重影响 LIKE 操作的执行性能。

MATCH 条件和 NMATCH 条件使用正则表达式进行匹配,规则如下:

  • 支持符合 POSIX 规范的正则表达式,具体规范内容可参见 Regular Expressions。
  • MATCH 和正则表达式匹配时, 返回 TURE. NMATCH 和正则表达式不匹配时, 返回 TRUE.
  • 只能针对子表名(即 tbname)、字符串类型的标签值进行正则表达式过滤,不支持普通列的过滤。
  • 正则匹配字符串长度不能超过 128 字节。可以通过参数 maxRegexStringLen 设置和调整最大允许的正则匹配字符串,该参数是客户端配置参数,需要重启客户端才能生效

逻辑运算符

# 运算符 支持的类型 说明
1 AND BOOL 逻辑与,如果两个条件均为 TRUE, 则返回 TRUE。如果任一为 FALSE,则返回 FALSE
2 OR BOOL 逻辑或,如果任一条件为 TRUE, 则返回 TRUE。如果两者都是 FALSE,则返回 FALSE

TDengine 在计算逻辑条件时,会进行短路径优化,即对于 AND,第一个条件为 FALSE,则不再计算第二个条件,直接返回 FALSE;对于 OR,第一个条件为 TRUE,则不再计算第二个条件,直接返回 TRUE。

访问官网

更多内容欢迎访问 TDengine 官网

相关推荐
渣渣盟12 小时前
当 Checkpoint 稳定运行后,如何进一步优化 Flink 作业的启动和恢复速度,让大状态作业的扩缩容从“小时级”降到“分钟级”?
大数据·flink
名字还没想好☜20 小时前
Python f-string 进阶:数字格式化、对齐填充、调试 = 号与嵌套表达式
开发语言·数据库·python·字符串格式化·f-string
ltl20 小时前
Serverless 数据库弹性理论:Neon 与 Aurora Serverless v2
数据库
延凡科技21 小时前
工业锅炉智慧云管控平台解决方案|物联网远程监测、智能预警与能耗优化
物联网·远程控制·工业物联网·设备运维·智慧锅炉
互联网中的一颗神经元21 小时前
04 — 安全撤销:改错了怎么退回去
大数据·安全·elasticsearch
marvelyu1 天前
每天10分钟学会OceanBase系列(Day 20):跨机房容灾实战——构建多数据中心高可用架构
java·大数据·数据库
数字新视界1 天前
IT资产管理系统推动智能化运维与资源更优化管理
物联网·机房管理·蓄电池·动力与环境监控系统·机房动力环境监控
ZCBUS实时计算1 天前
金融证券实时数仓建设实践:轻量化实时计算平台落地,实现交易数据端到端秒级处理
大数据·数据库·数据仓库·金融·flink·dba·etl
zd2005721 天前
海洋微生物数据库
数据库·宏基因组
海上小飞龙1 天前
Redis 分布式锁原理:从 SET NX EX 到 Redisson 看门狗
数据库·redis·分布式