运算符
算术运算符
| # | 运算符 | 支持的类型 | 说明 |
|---|---|---|---|
| 1 | + / - | 数值类型 | 表示正数和负数,一元运算符 |
| 2 | + / - | 数值类型 | 表示加法和减法,二元运算符 |
| 3 | * / / | 数值类型 | 表示乘法和除法,二元运算符 |
| 4 | % | 数值类型 | 表示取余运算,二元运算符 |
位运算符
| # | 运算符 | 支持的类型 | 说明 |
|---|---|---|---|
| 1 | & | 数值类型 | 按位与,二元运算符 |
| 2 | | | 数值类型 | 按位或,二元运算符 |
JSON 运算符
-> 运算符可以对 JSON 类型的列按键取值。左侧是列标识符,右侧是键的字符串常量,例如 col->'name',返回键 'name' 的值。
集合运算符
集合运算符将两个查询的结果合并为一个结果。包含集合运算符的查询称为复合查询。复合查询中,各查询选择列表的表达式数量必须一致;结果类型以第一条查询为准,后续查询的结果类型必须可转换到第一条查询的结果类型,转换规则同 CAST 函数。
TDengine 支持 UNION ALL 和 UNION。UNION ALL 合并结果集且不去重;UNION 合并结果集并去重。同一条 SQL 语句中,集合运算符最多支持 100 个。更多用法参见 UNION 子句。
比较运算符
| # | 运算符 | 支持的类型 | 说明 |
|---|---|---|---|
| 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 | REGEXP / NOT REGEXP | BINARY、NCHAR、VARCHAR | 正则表达式匹配 |
| 13 | CONTAINS | JSON | JSON 中是否存在某键 |
| 14 | ISNULL() | 所有类型 | 是否为空值 |
| 15 | ISNOTNULL() | 所有类型 | 是否为非空值 |
| 16 | COALESCE() | 所有类型 | 返回第一个非空值 |
| 17 | EXISTS | 子查询 | 子查询是否返回结果,v3.4.1.0 起支持 |
| 18 | NOT EXISTS | 子查询 | 子查询是否没有结果,v3.4.1.0 起支持 |
LIKE
LIKE 使用通配符字符串进行匹配,规则如下:
%(百分号)匹配 0 到任意个字符。_(下划线)匹配单个任意 ASCII 字符。- 若要匹配字符串中原本带有的
_字符,可在通配符字符串中写作\_,即加一个反斜线转义。 - 通配符字符串最长不能超过 100 字节。不建议使用过长的通配符字符串,否则可能显著影响
LIKE的执行性能。
MATCH / REGEXP
MATCH / REGEXP 与 NMATCH / NOT REGEXP 使用正则表达式匹配,规则如下:
- 支持符合 POSIX 规范的正则表达式,具体参见 Regular Expressions。
MATCH/REGEXP在匹配时返回TRUE;NMATCH/NOT REGEXP在不匹配时返回TRUE。- 只能针对表名(
tbname)以及BINARY/NCHAR类型值进行正则表达式过滤。详见 正则表达式过滤。 - 正则匹配字符串长度不能超过 128 字节。可通过客户端配置参数
maxRegexStringLen调整上限,修改后需要重启客户端才能生效。
逻辑运算符
| # | 运算符 | 支持的类型 | 说明 |
|---|---|---|---|
| 1 | AND | BOOL | 逻辑与:两个条件均为 TRUE 时返回 TRUE;任一为 FALSE 时返回 FALSE |
| 2 | OR | BOOL | 逻辑或:任一条件为 TRUE 时返回 TRUE;两者都为 FALSE 时返回 FALSE |
计算逻辑条件时会进行短路优化:对 AND,第一个条件为 FALSE 时不再计算第二个条件,直接返回 FALSE;对 OR,第一个条件为 TRUE 时不再计算第二个条件,直接返回 TRUE。








