跳到主要内容

运算符

算术运算符

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

位运算符

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

JSON 运算符

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

集合运算符

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

TDengine 支持 UNION ALLUNIONUNION ALL 合并结果集且不去重;UNION 合并结果集并去重。同一条 SQL 语句中,集合运算符最多支持 100 个。更多用法参见 UNION 子句

比较运算符

#运算符支持的类型说明
1=BLOBMEDIUMBLOBJSON 外的所有类型相等
2<> / !=BLOBMEDIUMBLOBJSON 外的所有类型,且不能用于表的时间戳主键列不相等
3> / <BLOBMEDIUMBLOBJSON 外的所有类型大于、小于
4>= / <=BLOBMEDIUMBLOBJSON 外的所有类型大于等于、小于等于
5IS [NOT] NULL所有类型是否为空值
6[NOT] BETWEEN ANDBOOLBLOBMEDIUMBLOBJSONGEOMETRY 外的所有类型闭区间比较
7INBLOBMEDIUMBLOBJSON 外的所有类型,且不能用于表的时间戳主键列与列表内任意值相等
8NOT INBLOBMEDIUMBLOBJSON 外的所有类型,且不能用于表的时间戳主键列与列表内任意值都不相等
9LIKEBINARYNCHARVARCHAR通配符匹配指定模式串
10NOT LIKEBINARYNCHARVARCHAR通配符不匹配指定模式串
11MATCH / NMATCHBINARYNCHARVARCHAR正则表达式匹配
12REGEXP / NOT REGEXPBINARYNCHARVARCHAR正则表达式匹配
13CONTAINSJSONJSON 中是否存在某键
14ISNULL()所有类型是否为空值
15ISNOTNULL()所有类型是否为非空值
16COALESCE()所有类型返回第一个非空值
17EXISTS子查询子查询是否返回结果,v3.4.1.0 起支持
18NOT EXISTS子查询子查询是否没有结果,v3.4.1.0 起支持

LIKE

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

  • %(百分号)匹配 0 到任意个字符。
  • _(下划线)匹配单个任意 ASCII 字符。
  • 若要匹配字符串中原本带有的 _ 字符,可在通配符字符串中写作 \_,即加一个反斜线转义。
  • 通配符字符串最长不能超过 100 字节。不建议使用过长的通配符字符串,否则可能显著影响 LIKE 的执行性能。

MATCH / REGEXP

MATCH / REGEXPNMATCH / NOT REGEXP 使用正则表达式匹配,规则如下:

  • 支持符合 POSIX 规范的正则表达式,具体参见 Regular Expressions
  • MATCH / REGEXP 在匹配时返回 TRUENMATCH / NOT REGEXP 在不匹配时返回 TRUE
  • 只能针对表名(tbname)以及 BINARY / NCHAR 类型值进行正则表达式过滤。详见 正则表达式过滤
  • 正则匹配字符串长度不能超过 128 字节。可通过客户端配置参数 maxRegexStringLen 调整上限,修改后需要重启客户端才能生效。

逻辑运算符

#运算符支持的类型说明
1ANDBOOL逻辑与:两个条件均为 TRUE 时返回 TRUE;任一为 FALSE 时返回 FALSE
2ORBOOL逻辑或:任一条件为 TRUE 时返回 TRUE;两者都为 FALSE 时返回 FALSE

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