TDengine SQL 函数

简介

TDengine 中支持的 SQL 函数比较丰富,我们按函数的类型进行了分类。从使用规则上,分为两大类,一类是投影查询函数,另一类是聚合查询函数。

投影函数只能用到投影查询中,聚合函数只能使用在聚合查询中,两种类型函数使用在一起会报语法错误。

  • 投影函数
    定义:投影函数用于从关系(表)中选取特定的列(属性),并将这些列的值进行展示或进一步处理,它主要是对关系进行垂直方向的筛选。
    作用:在数据库查询中,通过投影函数可以选择需要返回的列,而不必返回表中的所有列,这样可以减少数据的传输和处理量,提高查询效率,同时也能更好地满足用户对特定信息的需求。

  • 聚合函数
    定义:聚合函数是对一组数据进行计算,并返回一个单一的汇总值。它会对表中的多行数据进行统计计算,例如计算总和、平均值、最大值、最小值、计数等。
    作用:用于对数据进行分组汇总和统计分析,帮助用户快速获取数据的整体特征和统计信息,在数据分析、报表生成等场景中非常常用。

单行函数

单行函数为查询结果中的每一行返回一个结果行。

数学函数

ABS
sql 复制代码
ABS(expr)

功能说明:获得指定字段的绝对值。

返回结果类型:与指定字段的原始数据类型一致。

适用数据类型:数值类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明:只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。

ACOS
sql 复制代码
ACOS(expr)

功能说明:获得指定字段的反余弦结果。

返回结果类型:DOUBLE。

适用数据类型:数值类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明:只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。

ASIN
sql 复制代码
ASIN(expr)

功能说明:获得指定字段的反正弦结果。

返回结果类型:DOUBLE。

适用数据类型:数值类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明:只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。

ATAN
sql 复制代码
ATAN(expr)

功能说明:获得指定字段的反正切结果。

返回结果类型:DOUBLE。

适用数据类型:数值类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明:只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。

CEIL
sql 复制代码
CEIL(expr)

功能说明:获得指定字段的向上取整数的结果。

返回结果类型:与指定字段的原始数据类型一致。

适用数据类型:数值类型。

适用于:表和超级表。

嵌套子查询支持:适用于内层查询和外层查询。

使用说明:只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。

COS
sql 复制代码
COS(expr)

功能说明:获得指定字段的余弦结果。

返回结果类型:DOUBLE。

适用数据类型:数值类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明:只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。

DEGREES
sql 复制代码
DEGREES(expr)

功能说明:计算指定参数由弧度值转为角度后的值。

版本:v3.3.3.0

返回结果类型:DOUBLE。

适用数据类型:数值类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • 如果 expr 为 NULL,则返回 NULL。
  • degree = radian * 180 / π。
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。

举例

sql 复制代码
taos> select degrees(PI());
       degrees(pi())       |
============================
       180.000000000000000 |
EXP
sql 复制代码
EXP(expr)

功能说明:返回 e(自然对数的底)的指定乘方后的值。

版本:v3.3.3.0

返回结果类型:DOUBLE。

适用数据类型:数值类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • 如果 expr 为 NULL,返回 NULL。
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。

举例

sql 复制代码
taos> select exp(2);
          exp(2)           |
============================
         7.389056098930650 |
FLOOR
sql 复制代码
FLOOR(expr)

功能说明 :获得指定字段的向下取整数的结果。

其他使用说明参见 CEIL 函数描述。

LN
sql 复制代码
LN(expr)

功能说明:返回指定参数的自然对数。

版本:v3.3.3.0

返回结果类型:DOUBLE。

适用数据类型:数值类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • 如果 expr 为 NULL,返回 NULL。
  • 如果 epxr 小于等于 0,返回 NULL。
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。

举例

sql 复制代码
taos> select ln(10);
          ln(10)           |
============================
         2.302585092994046 |
LOG
sql 复制代码
LOG(expr1[, expr2])

功能说明:获得 expr1 对于底数 expr2 的对数。如果 expr2 参数省略,则返回指定字段的自然对数值。

返回结果类型:DOUBLE。

适用数据类型:数值类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明:只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。

MOD
sql 复制代码
MOD(expr1, expr2)

功能说明:计算 expr1 % expr2 的结果。

版本:v3.3.3.0

返回结果类型:DOUBLE。

适用数据类型:数值类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • 如果 expr2 为 0 则返回 NULL。
  • 如果 expr1expr2 为 NULL,返回 NULL。
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。

举例

sql 复制代码
taos> select mod(10,3);
         mod(10,3)         |
============================
         1.000000000000000 |

taos> select mod(1,0);
         mod(1,0)          |
============================
 NULL                      |
PI
sql 复制代码
PI()

功能说明:返回圆周率 π 的值。

版本:v3.3.3.0

返回结果类型:DOUBLE。

适用数据类型:无。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • π ≈ 3.141592653589793。
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。

举例

sql 复制代码
taos> select pi();
           pi()            |
============================
         3.141592653589793 |
POW
sql 复制代码
POW(expr1, expr2)

功能说明:获得 expr1 的指数为 expr2 的幂。

返回结果类型:DOUBLE。

适用数据类型:数值类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明:只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。

RADIANS
sql 复制代码
RADIANS(expr)

功能说明:计算指定参数由角度值转为弧度后的值。

版本:v3.3.3.0

返回结果类型:DOUBLE。

适用数据类型:数值类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • 如果 expr 为 NULL,则返回 NULL。
  • radian = degree * π / 180。
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。

举例

sql 复制代码
taos> select radians(180);
       radians(180)        |
============================
         3.141592653589793 |
RAND
sql 复制代码
RAND([seed])

功能说明:返回一个从0到1均匀分布的随机数。

版本:v3.3.3.0

返回结果类型:DOUBLE。

适用数据类型

  • seed:INTEGER。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • 如果指定了 seed 值,那么将会用指定的 seed 作为随机种子,确保生成的随机数序列具有确定性。
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。

举例

sql 复制代码
taos> select rand();
          rand()           |
============================
         0.202092426923147 |
         
taos> select rand();
          rand()           |
============================
         0.131537788143166 |
         
taos> select rand(1);
          rand(1)          |
============================
         0.000007826369259 |
         
taos> select rand(1);
          rand(1)          |
============================
         0.000007826369259 |
ROUND
sql 复制代码
ROUND(expr[, digits])

功能说明:获得指定字段的四舍五入的结果。

返回结果类型:与指定字段的原始数据类型一致。

适用数据类型

  • expr:数值类型。
  • digits:数值类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • exprdigits 为 NULL,返回 NULL。
  • 若指定了digits,则会保留 digits 位小数,默认为 0。
  • 若输入值是 INTEGER 类型,无论 digits 值为多少,都只会返回 INTEGER 类型,不会保留小数。
  • digits 大于零表示对小数位进行操作,四舍五入到 digits 位小数。若小数位数小于 digits 位,不进行四舍五入操作,直接返回。
  • digits 小于零表示丢掉小数位,并将数字四舍五入到小数点左侧 digits 位。若小数点左侧的位数小于 digits位,返回 0。
  • 由于暂未支持 DECIMAL 类型,所以该函数会用 DOUBLE 和 FLOAT 来表示包含小数的结果,但是 DOUBLE 和 FLOAT 是有精度上限的,当位数太多时使用该函数可能没有意义。
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。
  • digits 从 v3.3.3.0 开始支持。

举例

sql 复制代码
taos> select round(8888.88);
      round(8888.88)       |
============================
      8889.000000000000000 |

taos> select round(8888.88,-1);
     round(8888.88,-1)     |
============================
      8890.000000000000000 |
SIGN
sql 复制代码
SIGN(expr)

功能说明:返回指定参数的符号。

版本:v3.3.3.0

返回结果类型:与指定字段的原始数据类型一致。

适用数据类型:数值类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • 如果 expr 为负,返回 -1。
  • 如果 expr 为正,返回 1。
  • 如果 expr 为 0,返回 0。
  • 如果 expr 为 NULL,返回 NULL。
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。

举例

sql 复制代码
taos> select sign(-1);
       sign(-1)        |
========================
                    -1 |

taos> select sign(1);
        sign(1)        |
========================
                     1 |

taos> select sign(0);
        sign(0)        |
========================
                     0 |
SIN
sql 复制代码
SIN(expr)

功能说明:获得指定字段的正弦结果。

返回结果类型:DOUBLE。

适用数据类型:数值类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明:只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。

SQRT
sql 复制代码
SQRT(expr)

功能说明:获得指定字段的平方根。

返回结果类型:DOUBLE。

适用数据类型:数值类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明:只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。

TAN
sql 复制代码
TAN(expr)

功能说明:获得指定字段的正切结果。

返回结果类型:DOUBLE。

适用数据类型:数值类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明:只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。

TRUNCATE
sql 复制代码
TRUNCATE(expr, digits)

功能说明:获得指定字段按照指定位数截断的值。

版本:v3.3.3.0

返回结果类型 :与 expr 字段的原始数据类型一致。

适用数据类型

  • expr:数值类型。
  • digits:数值类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • exprdigits 为 NULL,返回 NULL。
  • 截取指按保留位数直接进行截取,没有四舍五入。
  • digits 大于零表示对小数位进行操作,截取到 digits 位小数,若小数位数小于 digits 位,不进行截取操作,直接返回。
  • digits 等于零表示丢掉小数位。
  • digits 小于零表示丢掉小数位,并将小数点左侧 digits 位置 0。若小数点左侧的位数小于 digits位,返回 0。
  • 由于暂未支持 DECIMAL 类型,所以该函数会用 DOUBLE 和 FLOAT 来表示包含小数的结果,但是 DOUBLE 和 FLOAT 是有精度上限的,当位数太多时使用该函数可能没有意义。
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。

举例

sql 复制代码
taos> select truncate(8888.88, 0);
 truncate(8888.88, 0)    |
============================
    8888.000000000000000 |
     
taos> select truncate(8888.88, -1);
 truncate(8888.88, -1)   |
============================
    8880.000000000000000 |

字符串函数

字符串函数的输入参数为字符串类型,返回结果为数值类型或字符串类型。

ASCII
sql 复制代码
ASCII(expr)

功能说明:返回字符串第一个字符的 ASCII 码。

版本:v3.3.3.0

返回结果数据类型:BIGINT。

适用数据类型:VARCHAR、NCHAR。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • 如果 expr 为 NULL,返回 NULL。
  • 如果 expr 的第一个字符为多字节字符,只会返回该字符第一个字节的值对应的 ASCII 码。

举例

sql 复制代码
taos> select ascii('testascii');
 ascii('testascii') |
=====================
                116 |
CHAR
sql 复制代码
CHAR(expr1 [, expr2] [, epxr3] ...)

功能说明:将输入参数当作整数,并返回这些整数在 ASCII 编码中对应的字符。

版本:v3.3.3.0

返回结果类型:VARCHAR。

适用数据类型:整数类型,VARCHAR、NCHAR。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • 输入的值超过 255 会被转化成多字节的结果,如 CHAR(256) 等同于 CHAR(1,0)CHAR(256 * 256) 等同于 CHAR(1,0,0)
  • 输入参数的 NULL 值会被跳过。
  • 输入参数若为字符串类型,会将其转换为数值类型处理。
  • 若输入的参数对应的字符为不可打印字符,返回值中仍有该参数对应的字符,但是可能无法显示出来。
  • 输入参数的个数上限为 2^31 - 1 个。

举例

sql 复制代码
taos> select char(77);
 char(77) |
===========
 M        |
 
taos> select char(77,77);
 char(77,77) |
==============
 MM          |
 
taos> select char(77 * 256 + 77);
 char(77 * 256 + 77) |
======================
 MM                  |
 
taos> select char(77,NULL,77);
 char(77,null,77) |
===================
 MM               |
CHAR_LENGTH
sql 复制代码
CHAR_LENGTH(expr)

功能说明:以字符计数的字符串长度。

返回结果类型:BIGINT。

适用数据类型:VARCHAR、NCHAR。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • LENGTH() 函数不同在于,对于多字节字符,比如中文字符,CHAR_LENGTH() 函数会将其算做一个字符,长度为 1,而 LENGTH() 会计算其字节数,长度为 3。比如 CHAR_LENGTH('你好') = 2LENGTH('你好') = 6
  • 如果 expr 为 NULL,返回 NULL。

举例

sql 复制代码
taos> select char_length('Hello world');
 char_length('Hello world') |
=============================
                         11 |
 
taos> select char_length('你好 世界');
      char_length('你好 世界') |
===============================
                            5 |
CONCAT
sql 复制代码
CONCAT(expr1, expr2 [, expr] ... )

功能说明:字符串连接函数。

返回结果类型:如果所有参数均为 VARCHAR 类型,则结果类型为 VARCHAR。如果参数包含NCHAR类型,则结果类型为NCHAR。如果参数包含NULL值,则输出值为NULL。

适用数据类型:VARCHAR、NCHAR。该函数最小参数个数为 2 个,最大参数个数为 8 个。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

CONCAT_WS
sql 复制代码
CONCAT_WS(separator_expr, expr1, expr2 [, expr] ...)

功能说明:带分隔符的字符串连接函数。

返回结果类型:如果所有参数均为VARCHAR类型,则结果类型为VARCHAR。如果参数包含NCHAR类型,则结果类型为NCHAR。如果参数包含NULL值,则输出值为NULL。

适用数据类型:VARCHAR、NCHAR。该函数最小参数个数为 3 个,最大参数个数为 9 个。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

LENGTH
sql 复制代码
LENGTH(expr)

功能说明:以字节计数的长度。

返回结果类型:BIGINT。

适用数据类型:VARCHAR、NCHAR、VARBINARY。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

LOWER
sql 复制代码
LOWER(expr)

功能说明:将字符串参数值转换为全小写字母。

返回结果类型:与输入字段的原始类型相同。

适用数据类型:VARCHAR、NCHAR。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

LTRIM
sql 复制代码
LTRIM(expr)

功能说明:返回清除左边空格后的字符串。

返回结果类型:与输入字段的原始类型相同。

适用数据类型:VARCHAR、NCHAR。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

POSITION
sql 复制代码
POSITION(expr1 IN expr2)

功能说明 :计算字符串 expr1 在字符串 expr2 中的位置。

版本:v3.3.3.0

返回结果类型:BIGINT。

适用数据类型

  • expr1:VARCHAR、NCHAR。
  • expr2:VARCHAR、NCHAR。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • expr1expr2 为 NULL,返回 NULL。
  • expr1expr2 中不存在,返回 0。
  • expr1 为空串,认为 expr1expr2 中总能匹配成功,返回 1。
  • 返回的位置是 1-base 的。
  • 该函数是多字节安全的。

举例

sql 复制代码
taos> select position('a' in 'cba');
 position('a' in 'cba') |
=========================
                      3 |
 
 
taos> select position('' in 'cba');
 position('' in 'cba') |
========================
                     1 |
 
taos> select position('d' in 'cba');
 position('d' in 'cba') |
=========================
                      0 |
REPEAT
sql 复制代码
REPEAT(expr, count)

功能说明:返回将字符串重复指定次数得到的字符串。

版本:v3.3.3.0

返回结果类型 :与输入字段 expr 的原始类型相同。

适用数据类型

  • expr:VARCHAR、NCHAR。
  • count:INTEGER。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • count < 1,返回空串。
  • exprcount 为 NULL,返回 NULL。

举例

sql 复制代码
taos> select repeat('abc',5);
      repeat('abc',5)      |
============================
 abcabcabcabcabc           |
            
taos> select repeat('abc',-1);
 repeat('abc',-1) |
===================
                  |
REPLACE
sql 复制代码
REPLACE(expr, from_str, to_str)

功能说明 :将字符串中的 from_str 全部替换为 to_str

版本:v3.3.3.0

返回结果类型 :与输入字段 expr 的原始类型相同。

适用数据类型

  • expr:VARCHAR、NCHAR。
  • from_str:VARCHAR、NCHAR。
  • to_str:VARCHAR、NCHAR。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • 该函数是大小写敏感的。
  • 任意参数为 NULL,返回 NULL。
  • 该函数是多字节安全的。

举例

sql 复制代码
taos> select replace('aabbccAABBCC', 'AA', 'DD');
 replace('aabbccAABBCC', 'AA', 'DD') |
======================================
 aabbccDDBBCC                        |
RTRIM
sql 复制代码
RTRIM(expr)

功能说明:返回清除右边空格后的字符串。

返回结果类型:与输入字段的原始类型相同。

适用数据类型:VARCHAR、NCHAR。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

SUBSTRING/SUBSTR
sql 复制代码
SUBSTRING/SUBSTR(expr, pos [, len])
SUBSTRING/SUBSTR(expr FROM pos [FOR len])

功能说明 :返回字符串 exprpos 位置开始的子串,若指定了 len,则返回在 pos 位置开始,长度为 len 的子串。

返回结果类型 :与输入字段 expr 的原始类型相同。

适用数据类型

  • expr:VARCHAR、NCHAR。
  • pos:整数类型。
  • len:整数类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • pos 为正数,则返回的结果为 expr 从左到右开始数 pos 位置开始的右侧的子串。
  • pos 为负数,则返回的结果为 expr 从右到左开始数 pos 位置开始的右侧的子串。
  • 任意参数为 NULL,返回 NULL。
  • 该函数是多字节安全的。
  • len 小于 1,返回空串。
  • pos 是 1-base 的,若 pos 为 0,返回空串。
  • pos + len 大于 len(expr),返回从 pos 开始到字符串结尾的子串,等同于执行 substring(expr, pos)
  • SUBSTRING 函数等价于 SUBSTR,从 v3.3.3.0 开始支持。
  • SUBSTRING/SUBSTR(expr FROM pos [FOR len]) 语法从 v3.3.3.0 开始支持。

举例

sql 复制代码
taos> select substring('tdengine', 0);
 substring('tdengine', 0) |
===========================
                          |

taos> select substring('tdengine', 3);
 substring('tdengine', 3) |
===========================
 engine                   |

taos> select substring('tdengine', 3,3);
 substring('tdengine', 3,3) |
=============================
 eng                        |

taos> select substring('tdengine', -3,3);
 substring('tdengine', -3,3) |
==============================
 ine                         |

taos> select substring('tdengine', -3,-3);
 substring('tdengine', -3,-3) |
===============================
                              |
SUBSTRING_INDEX
sql 复制代码
SUBSTRING_INDEX(expr, delim, count)

功能说明 :返回字符串 expr 在出现指定次数分隔符的位置截取的子串。

版本:v3.3.3.0

返回结果类型 :与输入字段 expr 的原始类型相同。

适用数据类型

  • expr:VARCHAR、NCHAR。
  • delim:VARCHAR、NCHAR。
  • count:INTEGER。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • count 为正数,则返回的结果为 expr 从左到右开始数第 count 次 出现 delim 的位置左侧的字符串。
  • count 为负数,则返回的结果为 expr 从右到左开始数第 count 的绝对值次 出现 delim 的位置右侧的字符串。
  • 任意参数为 NULL,返回 NULL。
  • 该函数是多字节安全的。

举例

sql 复制代码
taos> select substring_index('www.taosdata.com','.',2);
 substring_index('www.taosdata.com','.',2) |
============================================
 www.taosdata                              |

taos> select substring_index('www.taosdata.com','.',-2);
 substring_index('www.taosdata.com','.',-2) |
=============================================
 taosdata.com                               |
TRIM
sql 复制代码
TRIM([{LEADING | TRAILING | BOTH} [remstr] FROM] expr)
TRIM([remstr FROM] expr)

功能说明:返回去掉了所有 remstr 前缀或后缀的字符串 epxr。

版本:v3.3.3.0

返回结果类型:与输入字段 epxr 的原始类型相同。

适用数据类型

  • remstr:VARCHAR、NCHAR。
  • epxr:VARCHAR、NCHAR。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • 第一个可选变量[LEADING | BOTH | TRAILING]指定要剪裁字符串的哪一侧:
    • LEADING 将移除字符串开头的指定字符。
    • TRAILING 将移除字符串末尾的指定字符。
    • BOTH(默认值)将移除字符串开头和末尾的指定字符。
  • 第二个可选变量[remstr]指定要裁剪掉的字符串:
    • 如果不指定 remstr,默认裁剪空格。
    • remstr 可以指定多个字符,如trim('ab' from 'abacd'),此时会将 'ab' 看做一个整体来裁剪,得到裁剪结果 'acd'。
  • 若 expr 为 NULL,返回 NULL。
  • 该函数是多字节安全的。

举例

sql 复制代码
taos> select trim('        a         ');
 trim('        a         ') |
=============================
 a                          |
 
taos> select trim(leading from '        a         ');
 trim(leading from '        a         ') |
==========================================
 a                                       |
 

taos> select trim(leading 'b' from 'bbbbbbbba         ');
 trim(leading 'b' from 'bbbbbbbba         ') |
==============================================
 a                                           |
 
taos> select trim(both 'b' from 'bbbbbabbbbbb');
 trim(both 'b' from 'bbbbbabbbbbb') |
=====================================
 a                                  |
UPPER
sql 复制代码
UPPER(expr)

功能说明:将字符串参数值转换为全大写字母。

返回结果类型:与输入字段的原始类型相同。

适用数据类型:VARCHAR、NCHAR。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

转换函数

转换函数将值从一种数据类型转换为另一种数据类型。

CAST
sql 复制代码
CAST(expr AS type_name)

功能说明:数据类型转换函数,返回 expr 转换为 type_name 指定的类型后的结果。

返回结果类型:CAST 中指定的类型(type_name)。

适用数据类型:输入参数 expr 的类型可以是除 JSON 和 VARBINARY 外的所有类型。如果 type_name 为 VARBINARY,则 expr 只能是 VARCHAR 类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • 对于不能支持的类型转换会直接报错。
  • 对于类型支持但某些值无法正确转换的情况,对应的转换后的值以转换函数输出为准。目前可能遇到的几种情况:
    • 字符串类型转换数值类型时可能出现的无效字符情况,例如 "a" 可能转为 0,但不会报错。
    • 转换到数值类型时,数值大于 type_name 可表示的范围时,则会溢出,但不会报错。
    • 转换到字符串类型时,如果转换后长度超过 type_name 中指定的长度,则会截断,但不会报错。
TO_CHAR
sql 复制代码
TO_CHAR(ts, format_str_literal)

功能说明:将timestamp类型按照指定格式转换为字符串

版本:v3.2.2.0

返回结果数据类型:VARCHAR

应用字段:TIMESTAMP

嵌套子查询支持:适用于内层查询和外层查询

适用于:表和超级表

支持的格式

格式 说明 例子
AM,am,PM,pm 无点分隔的上午下午 07:00:00am
A.M.,a.m.,P.M.,p.m. 有点分隔的上午下午 07:00:00a.m.
YYYY,yyyy 年,4 个及以上数字 2023-10-10
YYY,yyy 年,最后 3 位数字 023-10-10
YY,yy 年,最后 2 位数字 23-10-10
Y,y 年,最后一位数字 3-10-10
MONTH 月,全大写 2023-JANUARY-01
Month 月,首字母大写 2023-January-01
month 月,全小写 2023-january-01
MON 月,缩写,全大写(三个字符) JAN、SEP
Mon 月,缩写,首字母大写 Jan、Sep
mon 月,缩写,全小写 jan、sep
MM,mm 月,数字 01-12 2023-01-01
DD,dd 月日,01-31
DAY 周日,全大写 MONDAY
Day 周日,首字符大写 Monday
day 周日,全小写 monday
DY 周日,缩写,全大写 MON
Dy 周日,缩写,首字符大写 Mon
dy 周日,缩写,全小写 mon
DDD 年日,001-366
D,d 周日,数字,1-7,Sunday(1) to Saturday(7)
HH24,hh24 小时,00-23 2023-01-30 23:59:59
hh12,HH12,hh,HH 小时,01-12 2023-01-30 12:59:59PM
MI,mi 分钟,00-59
SS,ss 秒,00-59
MS,ms 毫秒,000-999
US,us 微秒,000000-999999
NS,ns 纳秒,000000000-999999999
TZH,tzh 时区小时 2023-01-30 11:59:59PM +08

使用说明

  • MonthDay等的输出格式是左对齐的,右侧添加空格,如 2023-OCTOBER -012023-SEPTEMBER-01,9 月是月份中英文字母数最长的,因此 9 月没有空格。星期类似。
  • 使用msusns时,以上三种格式的输出只在精度上不同,比如 ts 为 1697182085123ms 的输出为 123us 的输出为 123000ns 的输出为 123000000
  • 时间格式中无法匹配规则的内容会直接输出。如果想要在格式串中指定某些能够匹配规则的部分不做转换,可以使用双引号,如 to_char(ts, 'yyyy-mm-dd "is formated by yyyy-mm-dd"')。如果想要输出双引号,那么在双引号之前加一个反斜杠,如 to_char(ts, '\"yyyy-mm-dd\"') 将会输出 "2023-10-10"
  • 那些输出是数字的格式,如YYYYDD,大写与小写意义相同,即 yyyyYYYY 可以互换。
  • 推荐在时间格式中带时区信息,如果不带则默认输出的时区为服务端或客户端所配置的时区。
  • 输入时间戳的精度由所查询表的精度确定,若未指定表,则精度为毫秒。
TO_ISO8601
sql 复制代码
TO_ISO8601(expr [, timezone])

功能说明:将时间戳转换成为 ISO8601 标准的日期时间格式,并附加时区信息。timezone 参数允许用户为输出结果指定附带任意时区信息。如果 timezone 参数省略,输出结果则附带当前客户端的系统时区信息。

返回结果数据类型:VARCHAR 类型。

适用数据类型:INTEGER、TIMESTAMP。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • timezone 参数允许输入的时区格式为:[z/Z, +/-hhmm, +/-hh, +/-hh:mm]。例如,TO_ISO8601(1, "+00:00")。
  • 输入时间戳的精度由所查询表的精度确定,若未指定表,则精度为毫秒.
TO_JSON
sql 复制代码
TO_JSON(str_literal)

功能说明:将字符串常量转换为 JSON 类型。

返回结果数据类型:JSON。

适用数据类型:JSON 字符串,形如 '{ "literal" : literal }'。'{}'表示空值。键必须为字符串字面量,值可以为数值字面量、字符串字面量、布尔字面量或空值字面量。str_literal 中不支持转义符。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

TO_TIMESTAMP
sql 复制代码
TO_TIMESTAMP(ts_str_literal, format_str_literal)

功能说明:将字符串按照指定格式转化为时间戳.

版本:v3.2.2.0

返回结果数据类型:TIMESTAMP

应用字段:VARCHAR

嵌套子查询支持:适用于内层查询和外层查询

适用于:表和超级表

支持的格式 :与to_char相同

使用说明

  • msusns 同时指定,那么结果时间戳包含上述三个字段的和。如 to_timestamp('2023-10-10 10:10:10.123.000456.000000789', 'yyyy-mm-dd hh:mi:ss.ms.us.ns') 输出为 2023-10-10 10:10:10.123456789对应的时间戳。
  • MONTHMONDAYDY 以及其他输出为数字的格式的大小写意义相同,如 to_timestamp('2023-JANUARY-01', 'YYYY-month-dd')month可以被替换为 MONTH 或者 Month
  • 如果同一字段被指定了多次,那么前面的指定将会被覆盖。如 to_timestamp('2023-22-10-10', 'yyyy-yy-MM-dd'),输出年份是2022
  • 为避免转换时使用了非预期的时区,推荐在时间中携带时区信息,例如'2023-10-10 10:10:10+08',如果未指定时区则默认时区为服务端或客户端指定的时区。
  • 如果没有指定完整的时间,那么默认时间值为指定或默认时区的 1970-01-01 00:00:00,未指定部分使用该默认值中的对应部分。暂不支持只指定年日而不指定月日的格式,如 'yyyy-mm-DDD',支持 'yyyy-mm-DD'。
  • 如果格式串中有AMPM等,那么小时必须是12小时制,范围必须是01-12。
  • to_timestamp转换具有一定的容错机制,在格式串和时间戳串不完全对应时,有时也可转换,如 to_timestamp('200101/2', 'yyyyMM1/dd'),格式串中多出来的 1 会被丢弃. 格式串与时间戳串中多余的空格字符(空格、tab 等)也会被 自动忽略。如 to_timestamp(' 23 年 - 1 月 - 01 日 ', 'yy 年-MM月-dd日') 可以被成功转换。虽然 MM 等字段需要两个数字对应(只有一位时前面补 0),在 to_timestamp 时,一个数字也可以成功转换。
  • 输出时间戳的精度与查询表的精度相同,若查询未指定表,则输出精度为毫秒。如 select to_timestamp('2023-08-1 10:10:10.123456789', 'yyyy-mm-dd hh:mi:ss.ns') 的输出将会把微秒和纳秒进行截断. 如果指定一张纳秒表,那么就不会发生截断,如 select to_timestamp('2023-08-1 10:10:10.123456789', 'yyyy-mm-dd hh:mi:ss.ns') from db_ns.table_ns limit 1
TO_UNIXTIMESTAMP
sql 复制代码
TO_UNIXTIMESTAMP(expr [, return_timestamp])

return_timestamp: {
    0
  | 1
}

功能说明:将日期时间格式的字符串转换成为时间戳。

返回结果数据类型:BIGINT、TIMESTAMP。

应用字段:VARCHAR、NCHAR。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • 输入的日期时间字符串须符合 ISO8601/RFC3339 标准,无法转换的字符串格式将返回 NULL。
  • 返回的时间戳精度与当前 DATABASE 设置的时间精度一致。
  • return_timestamp 指定函数返回值是否为时间戳类型,设置为 1 时返回 TIMESTAMP 类型,设置为 0 时返回 BIGINT 类型。如不指定缺省返回 BIGINT 类型。

时间和日期函数

时间和日期函数对时间戳类型进行操作。

所有返回当前时间的函数,如 NOW、TODAY 和 TIMEZONE,在一条 SQL 语句中不论出现多少次都只会被计算一次。

DAYOFWEEK
sql 复制代码
DAYOFWEEK(expr)

功能说明:返回输入日期是周几。

版本:v3.3.3.0

返回结果类型:BIGINT。

适用数据类型:表示时间戳的 BIGINT、TIMESTAMP 类型,或符合 ISO8601/RFC3339 标准的日期时间格式的 VARCHAR、NCHAR 类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • 返回值 1 代表周日,2 代表周一 ... 7 代表周六
  • expr 为 NULL,返回 NULL。
  • 输入时间戳的精度由所查询表的精度确定,若未指定表,则精度为毫秒。

举例

sql 复制代码
taos> select dayofweek('2000-01-01');
 dayofweek('2000-01-01') |
==========================
                       7 |
NOW
sql 复制代码
NOW()

功能说明:返回客户端当前系统时间。

返回结果数据类型:TIMESTAMP。

应用字段:在 WHERE 或 INSERT 语句中使用时只能作用于 TIMESTAMP 类型的字段。

适用于:表和超级表。

嵌套子查询支持:适用于内层查询和外层查询。

使用说明

  • 支持时间加减操作,如 NOW() + 1s,支持的时间单位如下:
    b(纳秒)、u(微秒)、a(毫秒)、s(秒)、m(分)、h(小时)、d(天)、w(周)。
  • 返回的时间戳精度与当前 DATABASE 设置的时间精度一致。
TIMEDIFF
sql 复制代码
TIMEDIFF(expr1, expr2 [, time_unit])

功能说明 :返回时间戳 expr1 - expr2 的结果,结果可能为负,并近似到时间单位 time_unit 指定的精度。

返回结果类型:BIGINT。

适用数据类型

  • expr1:表示时间戳的 BIGINT、TIMESTAMP 类型,或符合 ISO8601/RFC3339 标准的日期时间格式的 VARCHAR、NCHAR 类型。
  • expr2:表示时间戳的 BIGINT、TIMESTAMP 类型,或符合 ISO8601/RFC3339 标准的日期时间格式的 VARCHAR、NCHAR 类型。
  • time_unit:见使用说明。
  • v3.3.3.0 之前该函数结果为时间戳 expr1expr2 的差值的绝对值,结果为正数。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • 支持的时间单位 time_unit 如下:1b(纳秒)、1u(微秒)、1a(毫秒)、1s(秒)、1m(分)、1h(小时)、1d(天)、1w(周)。
  • 如果时间单位 time_unit 未指定,返回的时间差值精度与当前 DATABASE 设置的时间精度一致。
  • 输入包含不符合时间日期格式的字符串则返回 NULL。
  • expr1expr2 为 NULL,返回 NULL。
  • time_unit 为 NULL,等同于未指定时间单位。
  • 输入时间戳的精度由所查询表的精度确定,若未指定表,则精度为毫秒.

举例

sql 复制代码
taos> select timediff('2022-01-01 08:00:00', '2022-01-01 08:00:01',1s);
 timediff('2022-01-01 08:00:00', '2022-01-01 08:00:01',1s) |
============================================================
                                                        -1 |

taos> select timediff('2022-01-01 08:00:01', '2022-01-01 08:00:00',1s);
 timediff('2022-01-01 08:00:01', '2022-01-01 08:00:00',1s) |
============================================================
                                                         1 |
TIMETRUNCATE
sql 复制代码
TIMETRUNCATE(expr, time_unit [, use_current_timezone])

use_current_timezone: {
    0
  | 1
}

功能说明:将时间戳按照指定时间单位 time_unit 进行截断。

返回结果数据类型:TIMESTAMP。

应用字段:表示时间戳的 BIGINT、TIMESTAMP 类型,或符合 ISO8601/RFC3339 标准的日期时间格式的 VARCHAR、NCHAR 类型。

适用于:表和超级表。

使用说明

  • 支持的时间单位 time_unit 如下:
    1b(纳秒)、1u(微秒)、1a(毫秒)、1s(秒)、1m(分)、1h(小时)、1d(天)、1w(周)。
  • 返回的时间戳精度与当前 DATABASE 设置的时间精度一致。
  • 输入时间戳的精度由所查询表的精度确定,若未指定表,则精度为毫秒.
  • 输入包含不符合时间日期格式的字符串则返回 NULL。
  • 当使用 1d/1w 作为时间单位对时间戳进行截断时,可通过设置 use_current_timezone 参数指定是否根据当前时区进行截断处理。
    值 0 表示使用 UTC 时区进行截断,值 1 表示使用当前时区进行截断。
    例如客户端所配置时区为 UTC+0800, 则 TIMETRUNCATE('2020-01-01 23:00:00', 1d, 0) 返回结果为东八区时间 '2020-01-01 08:00:00'。
    而使用 TIMETRUNCATE('2020-01-01 23:00:00', 1d, 1) 时,返回结果为东八区时间 '2020-01-01 00:00:00'。
    当不指定 use_current_timezone 时,use_current_timezone 默认值为 1。
  • 当将时间值截断到一周(1w)时,timetruncate 的计算是基于 Unix 时间戳(1970年1月1日00:00:00 UTC)进行的。Unix 时间戳始于星期四,
    因此所有截断后的日期都是星期四。
TIMEZONE
sql 复制代码
TIMEZONE()

功能说明:返回客户端当前时区信息。

返回结果数据类型:VARCHAR。

应用字段:无

适用于:表和超级表。

TODAY
sql 复制代码
TODAY()

功能说明:返回客户端当日零时的系统时间。

返回结果数据类型:TIMESTAMP。

应用字段:在 WHERE 或 INSERT 语句中使用时只能作用于 TIMESTAMP 类型的字段。

适用于:表和超级表。

使用说明

  • 支持时间加减操作,如 TODAY() + 1s,支持的时间单位如下:
    b(纳秒)、u(微秒)、a(毫秒)、s(秒)、m(分)、h(小时)、d(天)、w(周)。
  • 返回的时间戳精度与当前 DATABASE 设置的时间精度一致。
WEEK
sql 复制代码
WEEK(expr [, mode])

功能说明:返回输入日期的周数。

版本:v3.3.3.0

返回结果类型:BIGINT。

适用数据类型

  • expr:表示时间戳的 BIGINT、TIMESTAMP 类型,或符合 ISO8601/RFC3339 标准的日期时间格式的 VARCHAR、NCHAR 类型。
  • mode:0 - 7 之间的整数。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • expr 为 NULL,返回 NULL。
  • 输入时间戳的精度由所查询表的精度确定,若未指定表,则精度为毫秒.
  • mode 用来指定一周是从周日开始还是周一开始,以及指定返回值范围是 1 - 53 还是 0 - 53。下表详细描述不同的 mode 对应的计算方法:
Mode 每周的第一天 返回值范围 第 1 周的计算方法
0 周日 0 - 53 第一个包含周日的周为第 1 周
1 周一 0 - 53 第一个包含四天及以上的周为第 1 周
2 周日 1 - 53 第一个包含周日的周为第 1 周
3 周一 1 - 53 第一个包含四天及以上的周为第 1 周
4 周日 0 - 53 第一个包含四天及以上的周为第 1 周
5 周一 0 - 53 第一个包含周一的周为第 1 周
6 周日 1 - 53 第一个包含四天及以上的周为第 1 周
7 周一 1 - 53 第一个包含周一的周为第 1 周
  • 当返回值范围为 0 - 53 时,第 1 周之前的日期为第 0 周。
  • 当返回值范围为 1 - 53 时,第 1 周之前的日期为上一年的最后一周。
  • 2000-01-01为例,
    • mode=0 时返回值为 0,因为该年第一个周日为 2000-01-02,从 2000-01-02 起才是第 1 周,所以 2000-01-01 为第 0 周,返回 0。
    • mode=1 时返回值为 0,因为 2000-01-01 所在的周只有两天,分别是 2000-01-01(周六)2000-01-02(周日),所以 2000-01-03 起才是第一周,2000-01-01为第 0 周,返回 0。
    • mode=2 时返回值为 52,因为从 2000-01-02 起才是第 1 周,并且返回值范围为 1-53,所以 2000-01-01 算做上一年的最后一周,即 1999 年的第 52 周,返回 52。

举例

sql 复制代码
taos> select week('2000-01-01',0);
 week('2000-01-01',0)  |
========================
                     0 |

taos> select week('2000-01-01',1);
 week('2000-01-01',1)  |
========================
                     0 |

taos> select week('2000-01-01',2);
 week('2000-01-01',2)  |
========================
                    52 |

taos> select week('2000-01-01',3);
 week('2000-01-01',3)  |
========================
                    52 |
WEEKDAY
sql 复制代码
WEEKDAY(expr)

功能说明:返回输入日期是周几。

版本:v3.3.3.0

返回结果类型:BIGINT。

适用数据类型:表示时间戳的 BIGINT、TIMESTAMP 类型,或符合 ISO8601/RFC3339 标准的日期时间格式的 VARCHAR、NCHAR 类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • 返回值 0 代表周一,1 代表周二 ... 6 代表周日。
  • expr 为 NULL,返回 NULL。
  • 输入时间戳的精度由所查询表的精度确定,若未指定表,则精度为毫秒。

举例

sql 复制代码
taos> select weekday('2000-01-01');
 weekday('2000-01-01') |
========================
                     5 |
WEEKOFYEAR
sql 复制代码
WEEKOFYEAR(expr)

功能说明:返回输入日期的周数。

版本:v3.3.3.0

返回结果类型:BIGINT。

适用数据类型:表示时间戳的 BIGINT、TIMESTAMP 类型,或符合 ISO8601/RFC3339 标准的日期时间格式的 VARCHAR、NCHAR 类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • 等同于WEEK(expr, 3),即在每周第一天是周一,返回值范围为 1 - 53,第一个包含四天及以上的周为第 1 周的条件下判断输入日期的周数。
  • expr 为 NULL,返回 NULL。
  • 输入时间戳的精度由所查询表的精度确定,未指定表,则精度为毫秒。

举例

sql 复制代码
taos> select weekofyear('2000-01-01');
 weekofyear('2000-01-01') |
===========================
                       52 |

聚合函数

聚合函数为查询结果集的每一个分组返回单个结果行。可以由 GROUP BY 或窗口切分子句指定分组,如果没有,则整个查询结果集视为一个分组。

TDengine 支持针对数据的聚合查询。提供如下聚合函数。

APERCENTILE

sql 复制代码
APERCENTILE(expr, p [, algo_type])

algo_type: {
    "default"
  | "t-digest"
}

功能说明:统计表/超级表中指定列的值的近似百分比分位数,与 PERCENTILE 函数相似,但是返回近似结果。

返回数据类型:DOUBLE。

适用数据类型:数值类型。

适用于:表和超级表。

说明

  • p 值范围是 [0,100],当为 0 时等同 于MIN,为 100 时等同于 MAX。
  • algo_type 取值为 "default" 或 "t-digest"。输入为 "default" 时函数使用基于直方图算法进行计算。输入为 "t-digest" 时使用 t-digest 算法计算分位数的近似结果。如果不指定 algo_type 则使用 "default" 算法。
  • t-digest 算法的近似结果对于输入数据顺序敏感,对超级表查询时不同的输入排序结果可能会有微小的误差。

AVG

sql 复制代码
AVG(expr)

功能说明:统计指定字段的平均值。

返回数据类型:DOUBLE。

适用数据类型:数值类型。

适用于:表和超级表。

COUNT

sql 复制代码
COUNT({* | expr})

功能说明:统计指定字段的记录行数。

返回数据类型:BIGINT。

适用数据类型:全部类型字段。

适用于:表和超级表。

使用说明

  • 可以使用星号 (*) 来替代具体的字段,使用星号 (*) 返回全部记录数量。
  • 如果统计字段是具体的列,则返回该列中非 NULL 值的记录数量。

ELAPSED

sql 复制代码
ELAPSED(ts_primary_key [, time_unit])

功能说明:elapsed 函数表达了统计周期内连续的时间长度,和 twa 函数配合使用可以计算统计曲线下的面积。在通过 INTERVAL 子句指定窗口的情况下,统计在给定时间范围内的每个窗口内有数据覆盖的时间范围;如果没有 INTERVAL 子句,则返回整个给定时间范围内的有数据覆盖的时间范围。注意,ELAPSED 返回的并不是时间范围的绝对值,而是绝对值除以 time_unit 所得到的单位个数。流计算仅在 FORCE_WINDOW_CLOSE 模式下支持该函数。

返回结果类型:DOUBLE。

适用数据类型:TIMESTAMP。

适用于:表,超级表,嵌套查询的外层查询

说明

  • ts_primary_key 参数只能是表的第一列,即 TIMESTAMP 类型的主键列。
  • 按 time_unit 参数指定的时间单位返回,最小是数据库的时间分辨率。time_unit 参数未指定时,以数据库的时间分辨率为时间单位。支持的时间单位 time_unit 如下:
    1b(纳秒)、1u(微秒)、1a(毫秒)、1s(秒)、1m(分)、1h(小时)、1d(天)、1w(周)。
  • 可以和 interval 组合使用,返回每个时间窗口的时间戳差值。需要特别注意的是,除第一个时间窗口和最后一个时间窗口外,中间窗口的时间戳差值均为窗口长度。
  • order by asc/desc 不影响差值的计算结果。
  • 对于超级表,需要和 group by tbname 子句组合使用,不可以直接使用。
  • 对于普通表,不支持和 group by 子句组合使用。
  • 对于嵌套查询,仅当内层查询会输出隐式时间戳列时有效。例如 select elapsed(ts) from (select diff(value) from sub1) 语句,diff 函数会让内层查询输出隐式时间戳列,此为主键列,可以用于 elapsed 函数的第一个参数。相反,例如 select elapsed(ts) from (select * from sub1) 语句,ts 列输出到外层时已经没有了主键列的含义,无法使用 elapsed 函数。此外,elapsed 函数作为一个与时间线强依赖的函数,形如 select elapsed(ts) from (select diff(value) from st group by tbname) 尽管会返回一条计算结果,但并无实际意义,这种用法后续也将被限制。
  • 不支持与 leastsquares、diff、derivative、top、bottom、last_row、interp 等函数混合使用。

HISTOGRAM

sql 复制代码
HISTOGRAM(expr,bin_type, bin_description, normalized)

功能说明:统计数据按照用户指定区间的分布。

返回结果类型:如归一化参数 normalized 设置为 1,返回结果为 DOUBLE 类型,否则为 BIGINT 类型。

适用数据类型:数值型字段。

适用于:表和超级表。

详细说明

  • bin_type 用户指定的分桶类型,有效输入类型为 "user_input"、"linear_bin"、"log_bin"。

  • bin_description 描述如何生成分桶区间,针对三种桶类型,分别为以下描述格式(均为 JSON 格式字符串):

    • "user_input": "[1, 3, 5, 7]"

      用户指定 bin 的具体数值。

    • "linear_bin": "{"start": 0.0, "width": 5.0, "count": 5, "infinity": true}"

      "start" 表示数据起始点,"width" 表示每次 bin 偏移量,"count" 为 bin 的总数,"infinity" 表示是否添加(-inf, inf)作为区间起点和终点,

      生成区间为[-inf, 0.0, 5.0, 10.0, 15.0, 20.0, +inf]。

    • "log_bin": "{"start":1.0, "factor": 2.0, "count": 5, "infinity": true}"

      "start" 表示数据起始点,"factor" 表示按指数递增的因子,"count" 为 bin 的总数,"infinity" 表示是否添加(-inf, inf)作为区间起点和终点,

      生成区间为[-inf, 1.0, 2.0, 4.0, 8.0, 16.0, +inf]。

  • normalized 是否将返回结果归一化到 0~1 之间。有效输入为 0 和 1。

HYPERLOGLOG

sql 复制代码
HYPERLOGLOG(expr)

功能说明

  • 采用 hyperloglog 算法,返回某列的基数。该算法在数据量很大的情况下,可以明显降低内存的占用,求出来的基数是个估算值,标准误差(标准误差是多次实验,每次的平均数的标准差,不是与真实结果的误差)为 0.81%。
  • 在数据量较少的时候该算法不是很准确,可以使用 select count(data) from (select unique(col) as data from table) 的方法。

返回结果类型:INTEGER。

适用数据类型:任何类型。

适用于:表和超级表。

LEASTSQUARES

sql 复制代码
LEASTSQUARES(expr, start_val, step_val)

功能说明:统计表中某列的值的拟合直线方程。start_val 是自变量初始值,step_val 是自变量的步长值。

返回数据类型:字符串表达式(斜率、截距)。

适用数据类型:expr 必须是数值类型。

适用于:表。

PERCENTILE

sql 复制代码
PERCENTILE(expr, p [, p1] ... )

功能说明:统计表中某列的值百分比分位数。

返回数据类型:该函数最小参数个数为 2 个,最大参数个数为 11 个。可以最多同时返回 10 个百分比分位数。当参数个数为 2 时,返回一个分位数,类型为DOUBLE,当参数个数大于 2 时,返回类型为VARCHAR,格式为包含多个返回值的JSON数组。

应用字段:数值类型。

适用于:表。

使用说明

  • P 值取值范围 0≤P≤100,为 0 的时候等同于 MIN,为 100 的时候等同于 MAX;
  • 同时计算针对同一列的多个分位数时,建议使用一个 PERCENTILE 函数和多个参数的方式,能很大程度上降低查询的响应时间。
    比如,使用查询 SELECT percentile(col, 90, 95, 99) FROM table,性能会优于 SELECT percentile(col, 90), percentile(col, 95), percentile(col, 99) from table

SPREAD

sql 复制代码
SPREAD(expr)

功能说明:统计表中某列的最大值和最小值之差。

返回数据类型:DOUBLE。

适用数据类型:INTEGER、TIMESTAMP。

适用于:表和超级表。

STDDEV/STDDEV_POP

sql 复制代码
STDDEV/STDDEV_POP(expr)

功能说明:统计表中某列的总体标准差。

返回数据类型:DOUBLE。

适用数据类型:数值类型。

适用于:表和超级表。

说明

  • STDDEV_POP 函数等价于 STDDEV 函数,从 v3.3.3.0 开始支持。

举例

sql 复制代码
taos> select id from test_stddev;
     id      |
==============
           1 |
           2 |
           3 |
           4 |
           5 |

taos> select stddev_pop(id) from test_stddev;
      stddev_pop(id)       |
============================
         1.414213562373095 |

SUM

sql 复制代码
SUM(expr)

功能说明:统计表/超级表中某列的和。

返回数据类型:DOUBLE、BIGINT。

适用数据类型:数值类型。

适用于:表和超级表。

VAR_POP

sql 复制代码
VAR_POP(expr)

功能说明:统计表中某列的总体方差。

版本:v3.3.3.0

返回数据类型:DOUBLE。

适用数据类型:数值类型。

适用于:表和超级表。

举例

sql 复制代码
taos> select id from test_var;
     id      |
==============
           3 |
           1 |
           2 |
           4 |
           5 |

taos> select var_pop(id) from test_var;
        var_pop(id)        |
============================
         2.000000000000000 |

选择函数

选择函数根据语义在查询结果集中选择一行或多行结果返回。用户可以同时指定输出 ts 列或其他列(包括 tbname 和标签列),这样就可以方便地知道被选出的值是源于哪个数据行的。

BOTTOM

sql 复制代码
BOTTOM(expr, k)

功能说明 :统计表/超级表中某列的值最小 k 个非 NULL 值。如果多条数据取值一样,全部取用又会超出 k 条限制时,系统会从相同值中随机选取符合要求的数量返回。

返回数据类型:同应用的字段。

适用数据类型:数值类型。

适用于:表和超级表。

使用说明

  • k 值取值范围 1≤k≤100;
  • 系统同时返回该记录关联的时间戳列;
  • 限制:BOTTOM 函数不支持 FILL 子句。

FIRST

sql 复制代码
FIRST(expr)

功能说明:统计表/超级表中某列的值最先写入的非 NULL 值。

返回数据类型:同应用的字段。

适用数据类型:所有字段。

适用于:表和超级表。

使用说明

  • 如果要返回各个列的首个(时间戳最小)非 NULL 值,可以使用 FIRST(*);查询超级表,且 multiResultFunctionStarReturnTags 设置为 0 (默认值) 时,FIRST(*) 只返回超级表的普通列;设置为 1 时,返回超级表的普通列和标签列。
  • 如果结果集中的某列全部为 NULL 值,则该列的返回结果也是 NULL;
  • 如果结果集中所有列全部为 NULL 值,则不返回结果。
  • 对于存在复合主键的表的查询,若最小时间戳的数据有多条,则只有对应的复合主键最小的数据被返回。

INTERP

sql 复制代码
INTERP(expr [, ignore_null_values])

ignore_null_values: {
    0
  | 1
}

功能说明:返回指定时间截面指定列的记录值或插值。ignore_null_values 参数的值可以是 0 或 1,为 1 时表示忽略 NULL 值,缺省值为 0。

返回数据类型:同字段类型。

适用数据类型:数值类型。

适用于:表和超级表。

使用说明

  • INTERP 用于在指定时间断面获取指定列的记录值,如果该时间断面不存在符合条件的行数据,那么会根据 FILL 参数的设定进行插值。
  • INTERP 的输入数据为指定列的数据,可以通过条件语句(where 子句)来对原始列数据进行过滤,如果没有指定过滤条件则输入为全部数据。
  • INTERP SQL 查询需要同时与 RANGE、EVERY 和 FILL 关键字一起使用;流计算不能使用 RANGE,需要 EVERY 和 FILL 关键字一起使用。
  • INTERP 的输出时间范围根据 RANGE(timestamp1, timestamp2) 字段来指定,需满足 timestamp1 <= timestamp2。其中 timestamp1 为输出时间范围的起始值,即如果 timestamp1 时刻符合插值条件则 timestamp1 为输出的第一条记录,timestamp2 为输出时间范围的结束值,即输出的最后一条记录的 timestamp 不能大于 timestamp2。
  • INTERP 根据 EVERY(time_unit) 字段来确定输出时间范围内的结果条数,即从 timestamp1 开始每隔固定长度的时间(time_unit 值)进行插值,time_unit 可取值时间单位:1a(毫秒)、1s(秒)、1m(分)、1h(小时)、1d(天)、1w(周)。例如 EVERY(500a) 将对于指定数据每500毫秒间隔进行一次插值。
  • INTERP 根据 FILL 字段来决定在每个符合输出条件的时刻如何进行插值。关于 FILL 子句如何使用请参考 FILL 子句
  • INTERP 可以在 RANGE 字段中只指定唯一的时间戳对单个时间点进行插值,在这种情况下,EVERY 字段可以省略。例如 SELECT INTERP(col) FROM tb RANGE('2023-01-01 00:00:00') FILL(linear)
  • INTERP 作用于超级表时,会将该超级表下的所有子表数据按照主键列排序后进行插值计算,也可以搭配 PARTITION BY tbname 使用,将结果强制规约到单个时间线。
  • INTERP 可以与伪列 _irowts 一起使用,返回插值点所对应的时间戳(v3.0.2.0 以后支持)。
  • INTERP 可以与伪列 _isfilled 一起使用,显示返回结果是否为原始记录或插值算法产生的数据(v3.0.3.0 以后支持)。
  • INTERP 对于带复合主键的表的查询,若存在相同时间戳的数据,则只有对应的复合主键最小的数据参与运算。
  • INTERP 查询支持 NEAR FILL 模式,即当需要 FILL 时,使用距离当前时间点最近的数据进行插值,当前后时间戳与当前时间断面一样近时,FILL 前一行的值. 此模式在流计算中和窗口查询中不支持。例如 SELECT INTERP(col) FROM tb RANGE('2023-01-01 00:00:00', '2023-01-01 00:10:00') FILL(NEAR) (v3.3.4.9 及以后支持)。
  • INTERP 只有在使用 FILL PREV/NEXT/NEAR 模式时才可以使用伪列 _irowts_origin_irowts_origin在 v3.3.4.9 及以后支持。
  • INTERP RANGE子句支持时间范围的扩展(v3.3.4.9 及以后支持),如RANGE('2023-01-01 00:00:00', 10s)表示在时间点 '2023-01-01 00:00:00' 查找前后 10s 的数据进行插值,FILL PREV/NEXT/NEAR 分别表示从时间点向前/向后/前后查找数据,若时间点周围没有数据,则使用 FILL 指定的值进行插值,因此此时 FILL 子句必须指定值。例如 SELECT INTERP(col) FROM tb RANGE('2023-01-01 00:00:00', 10s) FILL(PREV, 1)。目前仅支持时间点和时间范围的组合,不支持时间区间和时间范围的组合,即不支持 RANGE('2023-01-01 00:00:00', '2023-02-01 00:00:00', 1h)。所指定的时间范围规则与 EVERY 类似,单位不能是年或月,值不能为 0,不能带引号。使用该扩展时,不支持除 FILL PREV/NEXT/NEAR 外的其他 FILL 模式,且不能指定 EVERY 子句。

LAST

sql 复制代码
LAST(expr)

功能说明:统计表/超级表中某列的值最后写入的非 NULL 值。

返回数据类型:同应用的字段。

适用数据类型:所有字段。

适用于:表和超级表。

使用说明:

  • 如果要返回各个列的最后(时间戳最大)一个非 NULL 值,可以使用 LAST(*);查询超级表,且 multiResultFunctionStarReturnTags 设置为 0 (默认值) 时,LAST(*) 只返回超级表的普通列;设置为 1 时,返回超级表的普通列和标签列。
  • 如果结果集中的某列全部为 NULL 值,则该列的返回结果也是 NULL;如果结果集中所有列全部为 NULL 值,则不返回结果。
  • 在用于超级表时,时间戳完全一样且同为最大的数据行可能有多个,那么会从中随机返回一条,而并不保证多次运行所挑选的数据行必然一致。
  • 对于存在复合主键的表的查询,若最大时间戳的数据有多条,则只有对应的复合主键最大的数据被返回。

LAST_ROW

sql 复制代码
LAST_ROW(expr)

功能说明:返回表/超级表的最后一条记录。

返回数据类型:同应用的字段。

适用数据类型:所有字段。

适用于:表和超级表。

使用说明

  • 如果要返回各个列的最后一条记录(时间戳最大),可以使用 LAST_ROW(*);查询超级表,且 multiResultFunctionStarReturnTags 设置为 0 (默认值) 时,LAST_ROW(*) 只返回超级表的普通列;设置为 1 时,返回超级表的普通列和标签列。
  • 在用于超级表时,时间戳完全一样且同为最大的数据行可能有多个,那么会从中随机返回一条,而并不保证多次运行所挑选的数据行必然一致。
  • 不能与 INTERVAL 一起使用。
  • 与 LAST 函数一样,对于存在复合主键的表的查询,若最大时间戳的数据有多条,则只有对应的复合主键最大的数据被返回。

MAX

sql 复制代码
MAX(expr)

功能说明:统计表/超级表中某列的值最大值。

返回数据类型:同应用的字段。

适用数据类型:数值类型、VARCHAR、NCHAR。

适用于:表和超级表。

使用说明

  • max 函数可以接受字符串作为输入参数,当输入参数为字符串类型时,返回最大的字符串值,从 v3.3.3.0 开始支持,之前的版本不支持字符串参数。

MIN

sql 复制代码
MIN(expr)

功能说明:统计表/超级表中某列的值最小值。

返回数据类型:同应用的字段。

适用数据类型:数值类型、VARCHAR、NCHAR。

适用于:表和超级表。

使用说明

  • min 函数可以接受字符串作为输入参数,当输入参数为字符串类型时,返回最大的字符串值,从 v3.3.3.0 开始支持,之前的版本不支持字符串参数。

MODE

sql 复制代码
MODE(expr)

功能说明:返回出现频率最高的值,若存在多个频率相同的最高值,则随机输出其中某个值。

返回数据类型:与输入数据类型一致。

适用数据类型:全部类型字段。

适用于:表和超级表。

SAMPLE

sql 复制代码
SAMPLE(expr, k)

功能说明:获取数据的 k 个采样值。参数 k 的合法输入范围是 1≤ k ≤ 1000。

返回结果类型:同原始数据类型。

适用数据类型:全部类型字段。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

TAIL

sql 复制代码
TAIL(expr, k [, offset_rows])

功能说明 :返回跳过最后 offset_val 个,然后取连续 k 个记录,不忽略 NULL 值。offset_val 可以不输入。此时返回最后的 k 个记录。当有 offset_val 输入的情况下,该函数功能等效于 order by ts desc LIMIT k OFFSET offset_val

参数范围:k: [1,100] offset_val: [0,100]。

返回数据类型:同应用的字段。

适用数据类型:适合于除时间主键列外的任何类型。

适用于:表、超级表。

TOP

sql 复制代码
TOP(expr, k)

功能说明 :统计表/超级表中某列的值最大 k 个非 NULL 值。如果多条数据取值一样,全部取用又会超出 k 条限制时,系统会从相同值中随机选取符合要求的数量返回。

返回数据类型:同应用的字段。

适用数据类型:数值类型。

适用于:表和超级表。

使用说明

  • k 值取值范围 1≤k≤100;
  • 系统同时返回该记录关联的时间戳列;
  • 限制:TOP 函数不支持 FILL 子句。

UNIQUE

sql 复制代码
UNIQUE(expr)

功能说明:返回该列数据去重后的值。该函数功能与 distinct 相似。对于相同的数据,返回时间戳最小的一条,对于存在复合主键的表的查询,若最小时间戳的数据有多条,则只有对应的复合主键最小的数据被返回。

返回数据类型:同应用的字段。

适用数据类型:全部类型字段。

适用于:表和超级表。

时序数据特有函数

时序数据特有函数是 TDengine 为了满足时序数据的查询场景而量身定做出来的。在通用数据库中,实现类似功能通常需要复杂的查询语法,且效率很低。TDengine 以函数的方式内置了这些功能,最大程度的减轻了用户的使用成本。

CSUM

sql 复制代码
CSUM(expr)

功能说明:累加和(Cumulative sum),忽略 NULL 值。

返回结果类型:输入列如果是整数类型返回值为长整型(bigint),浮点数返回值为双精度浮点数(double)。无符号整数类型返回值为无符号长整型(unsigned bigint)。

适用数据类型:数值类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • 不支持 +、-、*、/ 运算,如 csum(col1) + csum(col2)。
  • 只能与聚合(Aggregation)函数一起使用。该函数可以应用在普通表和超级表上。

DERIVATIVE

sql 复制代码
DERIVATIVE(expr, time_interval, ignore_negative)

ignore_negative: {
    0
  | 1
}

功能说明:统计表中某列数值的单位变化率。其中单位时间区间的长度可以通过 time_interval 参数指定,最小可以是 1 秒(1s);ignore_negative 参数的值可以是 0 或 1,为 1 时表示忽略负值。对于存在复合主键的表的查询,若时间戳相同的数据存在多条,则只有对应的复合主键最小的数据参与运算。

返回数据类型:DOUBLE。

适用数据类型:数值类型。

适用于:表和超级表。

使用说明

  • 可以与选择相关联的列一起使用。例如 select \_rowts, DERIVATIVE(col1, 1s, 1) from tb1

DIFF

sql 复制代码
DIFF(expr [, ignore_option])

ignore_option: {
    0
  | 1
  | 2
  | 3
}

功能说明:统计表中特定列与之前行的当前列有效值之差。ignore_option 取值为 0|1|2|3,可以不填,默认值为 0.

  • 0 表示不忽略(diff结果)负值不忽略 null 值
  • 1 表示(diff结果)负值作为 null 值
  • 2 表示不忽略(diff结果)负值但忽略 null 值
  • 3 表示忽略(diff结果)负值且忽略 null 值
  • 对于存在复合主键的表的查询,若时间戳相同的数据存在多条,则只有对应的复合主键最小的数据参与运算。

返回数据类型:bool、时间戳及整型数值类型均返回 bigint,浮点类型返回 double,若 diff 结果溢出则返回溢出后的值。

适用数据类型:数值类型、时间戳和 bool 类型。

适用于:表和超级表。

使用说明

  • diff 是计算本行特定列与同列的前一个有效数据的差值,同列的前一个有效数据:指的是同一列中时间戳较小的最临近的非空值。
  • 数值类型 diff 结果为对应的算术差值;时间戳类型根据数据库的时间戳精度进行差值计算;bool 类型计算差值时 true 视为 1,false 视为 0
  • 如当前行数据为 null 或者没有找到同列前一个有效数据时,diff 结果为 null
  • 忽略负值时(ignore_option 设置为 1 或 3 ),如果 diff 结果为负值,则结果设置为 null,然后根据 null 值过滤规则进行过滤
  • 当 diff 结果发生溢出时,结果是否是 应该忽略的负值 取决于逻辑运算结果是正数还是负数,例如 9223372036854775800 - (-9223372036854775806) 的值超出 BIGINT 的范围,diff 结果会显示溢出值 -10,但并不会被作为负值忽略
  • 单个语句中可以使用单个或者多个 diff,并且每个 diff 可以指定相同或不同的 ignore_option,当单个语句中存在多个 diff 时当且仅当某行所有 diff 的结果都为 null,并且 ignore_option 都设置为忽略 null 值,该行才从结果集中剔除
  • 可以选择与相关联的列一起使用。例如 select _rowts, DIFF() from
  • 当没有复合主键时,如果不同的子表有相同时间戳的数据,会提示 "Duplicate timestamps not allowed"
  • 当使用复合主键时,不同子表的时间戳和主键组合可能相同,使用哪一行取决于先找到哪一行,这意味着在这种情况下多次运行 diff() 的结果可能会不同。

IRATE

sql 复制代码
IRATE(expr)

功能说明:计算瞬时增长率。使用时间区间中最后两个样本数据来计算瞬时增长速率;如果这两个值呈递减关系,那么只取最后一个数用于计算,而不是使用二者差值。对于存在复合主键的表的查询,若时间戳相同的数据存在多条,则只有对应的复合主键最小的数据参与运算。

返回数据类型:DOUBLE。

适用数据类型:数值类型。

适用于:表和超级表。

MAVG

sql 复制代码
MAVG(expr, k)

功能说明:计算连续 k 个值的移动平均数(moving average)。如果输入行数小于 k,则无结果输出。参数 k 的合法输入范围是 1≤ k ≤ 1000。

返回结果类型:DOUBLE。

适用数据类型:数值类型。

嵌套子查询支持:适用于内层查询和外层查询。

适用于:表和超级表。

使用说明

  • 不支持 +、-、*、/ 运算,如 mavg(col1, k1) + mavg(col2, k1);
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用;

STATECOUNT

sql 复制代码
STATECOUNT(expr, oper, val)

功能说明:返回满足某个条件的连续记录的个数,结果作为新的一列追加在每行后面。条件根据参数计算,如果条件为 true 则加 1,条件为 false 则重置为-1,如果数据为 NULL,跳过该条数据。

参数范围

  • oper:"LT" (小于)、"GT"(大于)、"LE"(小于等于)、"GE"(大于等于)、"NE"(不等于)、"EQ"(等于),不区分大小写。
  • val:数值型

返回结果类型:INTEGER。

适用数据类型:数值类型。

嵌套子查询支持:不支持应用在子查询上。

适用于:表和超级表。

使用说明

  • 不能和窗口操作一起使用,例如 interval/state_window/session_window

STATEDURATION

sql 复制代码
STATEDURATION(expr, oper, val, unit)

功能说明:返回满足某个条件的连续记录的时间长度,结果作为新的一列追加在每行后面。条件根据参数计算,如果条件为 true 则加上两个记录之间的时间长度(第一个满足条件的记录时间长度记为 0),条件为 false 则重置为-1,如果数据为 NULL,跳过该条数据。

参数范围

  • oper:'LT' (小于)、'GT'(大于)、'LE'(小于等于)、'GE'(大于等于)、'NE'(不等于)、'EQ'(等于),不区分大小写,但需要用''包括。
  • val:数值型
  • unit:时间长度的单位,可取值时间单位:1b(纳秒)、1u(微秒)、1a(毫秒)、1s(秒)、1m(分)、1h(小时)、1d(天)、1w(周)。如果省略,默认为当前数据库精度。

返回结果类型:INTEGER。

适用数据类型:数值类型。

嵌套子查询支持:不支持应用在子查询上。

适用于:表和超级表。

使用说明

  • 不能和窗口操作一起使用,例如 interval/state_window/session_window。

TWA

sql 复制代码
TWA(expr)

功能说明:时间加权平均函数。统计表中某列在一段时间内的时间加权平均。对于存在复合主键的表的查询,若时间戳相同的数据存在多条,则只有对应的复合主键最小的数据参与运算。流计算仅在 FORCE_WINDOW_CLOSE 模式下支持该函数。

返回数据类型:DOUBLE。

适用数据类型:数值类型。

适用于:表和超级表。

系统信息函数

CLIENT_VERSION

sql 复制代码
SELECT CLIENT_VERSION();

说明:返回客户端版本。

CURRENT_USER

sql 复制代码
SELECT CURRENT_USER();

说明:获取当前用户。

DATABASE

sql 复制代码
SELECT DATABASE();

说明:返回当前登录的数据库。如果登录的时候没有指定默认数据库,且没有使用USE命令切换数据库,则返回NULL。

SERVER_STATUS

sql 复制代码
SELECT SERVER_STATUS();

说明 :检测服务端是否所有 dnode 都在线,如果是则返回成功,否则返回无法建立连接的错误。如果想要查询集群的状态,推荐使用 SHOW CLUSTER ALIVESELECT SERVER_STATUS() 不同,当集群中的部分节点不可用时,它不会返回错误,而是返回不同的状态码,详见:SHOW CLUSTER ALIVE

SERVER_VERSION

sql 复制代码
SELECT SERVER_VERSION();

说明:返回服务端版本。

Geometry 函数

Geometry 输入函数

ST_GeomFromText
sql 复制代码
ST_GeomFromText(VARCHAR WKT expr)

功能说明:根据 Well-Known Text (WKT) 表示从指定的几何值创建几何数据。

返回值类型:GEOMETRY。

适用数据类型:VARCHAR。

适用表类型:标准表和超表。

使用说明:输入可以是 WKT 字符串之一,例如点(POINT)、线串(LINESTRING)、多边形(POLYGON)、多点集(MULTIPOINT)、多线串(MULTILINESTRING)、多多边形(MULTIPOLYGON)、几何集合(GEOMETRYCOLLECTION)。输出是以二进制字符串形式定义的 GEOMETRY 数据类型。

Geometry 输出函数

ST_AsText
sql 复制代码
ST_AsText(GEOMETRY geom)

功能说明:从几何数据中返回指定的 Well-Known Text (WKT) 表示。

返回值类型:VARCHAR。

适用数据类型:GEOMETRY。

适用表类型:标准表和超表。

使用说明:输出可以是 WKT 字符串之一,例如点(POINT)、线串(LINESTRING)、多边形(POLYGON)、多点集(MULTIPOINT)、多线串(MULTILINESTRING)、多多边形(MULTIPOLYGON)、几何集合(GEOMETRYCOLLECTION)。

Geometry 关系函数

ST_Contains
sql 复制代码
ST_Contains(GEOMETRY geomA, GEOMETRY geomB)

功能说明:如果 A 包含 B,描述:如果几何形状 A 包含几何形状 B,则返回 TRUE。

返回值类型:BOOL。

适用数据类型:GEOMETRY、GEOMETRY。

适用表类型:标准表和超表。

使用说明:A 包含 B 当且仅当 B 的所有点位于 A 的内部(即位于内部或边界上)(或等效地,B 的没有点位于 A 的外部),并且 A 和 B 的内部至少有一个公共点。

ST_ContainsProperly
sql 复制代码
ST_ContainsProperly(GEOMETRY geomA, GEOMETRY geomB)

功能说明:如果 B 的每个点都位于 A 内部,则返回 TRUE。

返回值类型:BOOL。

适用数据类型:GEOMETRY、GEOMETRY。

适用表类型:标准表和超表。

使用说明:B 的没有点位于 A 的边界或外部。

ST_Covers
sql 复制代码
ST_Covers(GEOMETRY geomA, GEOMETRY geomB)

功能说明:如果 B 中的每个点都位于几何形状 A 内部(与内部或边界相交),则返回 TRUE。

返回值类型:BOOL。

适用数据类型:GEOMETRY、GEOMETRY。

适用表类型:标准表和超表。

使用说明:A 包含 B 意味着 B 中的没有点位于 A 的外部(在外部)。

ST_Equals
sql 复制代码
ST_Equals(GEOMETRY geomA, GEOMETRY geomB)

功能说明:如果给定的几何对象是"空间相等"的,则返回 TRUE。

返回值类型:BOOL。

适用数据类型:GEOMETRY、GEOMETRY。

适用表类型:标准表和超表。

使用说明:"空间相等"意味着 ST_Contains(A,B) = true 和 ST_Contains(B,A) = true,并且点的顺序可能不同,但表示相同的几何结构。

ST_Intersects
sql 复制代码
ST_Intersects(GEOMETRY geomA, GEOMETRY geomB)

##功能说明**:比较两个几何对象,并在它们相交时返回 true。

返回值类型:BOOL。

适用数据类型:GEOMETRY、GEOMETRY。

适用表类型:标准表和超表。

使用说明:如果两个几何对象有任何一个共享点,则它们相交。

ST_Touches
sql 复制代码
ST_Touches(GEOMETRY geomA, GEOMETRY geomB)

功能说明:如果 A 和 B 相交,但它们的内部不相交,则返回 TRUE。

返回值类型:BOOL。

适用数据类型:GEOMETRY、GEOMETRY。

适用表类型:标准表和超表。

使用说明:A 和 B 至少有一个公共点,并且这些公共点位于至少一个边界中。对于点/点输入,关系始终为 FALSE,因为点没有边界。

访问官网

更多内容欢迎访问 TDengine 官网

相关推荐
AI大数据智能洞察2 小时前
大数据领域数据仓库的备份恢复方案优化
大数据·数据仓库·ai
AI应用开发实战派2 小时前
大数据领域数据仓库的自动化测试实践
大数据·数据仓库·ai
AI算力网络与通信2 小时前
大数据领域 Hive 数据仓库搭建实战
大数据·数据仓库·hive·ai
Leo.yuan2 小时前
ODS 是什么?一文搞懂 ODS 与数据仓库区别
大数据·数据仓库·数据挖掘·数据分析·spark
名誉寒冰5 小时前
MySQL索引原理解析:为什么选择B+树?
数据库·b树·mysql
我是苏苏5 小时前
Redis开发07:使用stackexchange.redis库实现简单消息队列
数据库·redis·缓存
拾光师5 小时前
Hadoop RPC深度解析:分布式通信的核心机制
大数据·hadoop
煎蛋学姐5 小时前
SSM装修服务网站5ff59(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·ssm 框架
isNotNullX6 小时前
ETL详解:从核心流程到典型应用场景
大数据·数据仓库·人工智能·架构·etl
云心雨禅6 小时前
WordPress提速指南:Memcached+Super Static Cache+CDN缓存网站内容
linux·服务器·数据库·缓存·memcached