以下内容来自 TDengine 官方文档 及
GitHub 内容 。以下所有示例基于 TDengine 3.1.0.3
TDengine函数大全
1.数学函数
2.字符串函数
3.转换函数
4.时间和日期函数
5.聚合函数
6.选择函数
7.时序数据库特有函数
8.系统函数
字符串函数
- TDengine函数大全
- CHAR_LENGTH
- CONCAT
- CONCAT_WS
- LENGTH
- LOWER
- LTRIM
- RTRIM
- SUBSTR
- UPPER
CHAR_LENGTH
CHAR_LENGTH(expr)
功能说明:以字符计数的字符串长度。
返回结果类型:BIGINT。
适用数据类型:VARCHAR(BINARY), NCHAR。
嵌套子查询支持:适用于内层查询和外层查询。
适用于: 表和超级表。
示例:
写入测试数据
> create table t2(ts timestamp,v1 nchar(100),v2 binary(100));
> insert into t2 values(now,'1234567890','1234567890');
> insert into t2 values(now,'abcdefghijklmnopq','abcdefghijklmnopq');
> select * from t2;ts | v1 | v2 |
============================================================================================2023-08-30 16:50:51.997 | 1234567890 | 1234567890 |2023-08-30 16:51:13.694 | abcdefghijklmnopq | abcdefghijklmnopq |
> select * from t2;ts | v1 | v2 |
============================================================================================2023-08-30 16:50:51.997 | 1234567890 | 1234567890 |2023-08-30 16:51:13.694 | abcdefghijklmnopq | abcdefghijklmnopq |> select ts,char_length(v1),char_length(v2) from t2;ts | char_length(v1) | char_length(v2) |
==========================================================================2023-08-30 16:50:51.997 | 10 | 10 |2023-08-30 16:51:13.694 | 17 | 17 |> select ts,char_length(v1),char_length(v2) from (select * from t2);ts | char_length(v1) | char_length(v2) |
==========================================================================2023-08-30 16:50:51.997 | 10 | 10 |2023-08-30 16:51:13.694 | 17 | 17 |> select char_length('1234567890') from t2 limit 1;char_length('1234567890') |
============================10 |
CONCAT
CONCAT(expr1, expr2 [, expr] ... )
功能说明:字符串连接函数。
返回结果类型:如果所有参数均为 VARCHAR 类型,则结果类型为 VARCHAR。如果参数包含NCHAR类型,则结果类型为NCHAR。如果参数包含NULL值,则输出值为NULL。
适用数据类型:VARCHAR, NCHAR。 该函数最小参数个数为2个,最大参数个数为8个。
嵌套子查询支持:适用于内层查询和外层查询。
适用于: 表和超级表。
示例:
> select * from t2;ts | v1 | v2 |
============================================================================================2023-08-30 16:50:51.997 | 1234567890 | 1234567890 |2023-08-30 16:51:13.694 | abcdefghijklmnopq | abcdefghijklmnopq |> select ts,concat(v1,v2) from t2;ts | concat(v1,v2) |
===========================================================2023-08-30 16:50:51.997 | 12345678901234567890 |2023-08-30 16:51:13.694 | abcdefghijklmnopqabcdefghij... |> select ts,char_length(concat(v1,v2)) from t2;ts | char_length(concat(v1,v2)) |
=======================================================2023-08-30 16:50:51.997 | 20 |2023-08-30 16:51:13.694 | 34 |> select ts,concat(v1,v1,v2,v2) from t2;ts | concat(v1,v1,v2,v2) |
===========================================================2023-08-30 16:50:51.997 | 123456789012345678901234567... |2023-08-30 16:51:13.694 | abcdefghijklmnopqabcdefghij... |> select ts,char_length(concat(v1,v1,v2,v2)) from t2;ts | char_length(concat(v1,v1,v2,v2)) |
=============================================================2023-08-30 16:50:51.997 | 40 |2023-08-30 16:51:13.694 | 68 |> select concat('CONCAT ','funcation ','test!') from t2 limit 1;concat('CONCAT ','funcation ','test!') |
=========================================CONCAT funcation test! |> select char_length(concat('CONCAT ','funcation ','test!')) from t2 limit 1;char_length(concat('CONCAT ','funcation ','test!')) |
======================================================22 |
> select concat('a','b','c','d','e','f','g','h') from t2 limit 1;concat('a','b','c','d','e','f','g','h') |
==========================================abcdefgh |> select concat('a','b','c','d','e','f','g','h','i') from t2 limit 1;
DB error: Invalid number of parameters : concat (0.000437s)> select concat('a') from t2 limit 1;
DB error: Invalid number of parameters : concat (0.000223s)
CONCAT_WS
CONCAT_WS(separator_expr, expr1, expr2 [, expr] ...)
功能说明:带分隔符的字符串连接函数。
返回结果类型:如果所有参数均为VARCHAR类型,则结果类型为VARCHAR。如果参数包含NCHAR类型,则结果类型为NCHAR。如果参数包含NULL值,则输出值为NULL。
适用数据类型:VARCHAR, NCHAR。 该函数最小参数个数为3个,最大参数个数为9个。
嵌套子查询支持:适用于内层查询和外层查询。
适用于: 表和超级表。
示例:
> select * from t2;ts | v1 | v2 |
============================================================================================2023-08-30 16:50:51.997 | 1234567890 | 1234567890 |2023-08-30 16:51:13.694 | abcdefghijklmnopq | abcdefghijklmnopq |> select ts,concat_ws(',',v1,v2) from t2;ts | concat_ws(',',v1,v2) |
===========================================================2023-08-30 16:50:51.997 | 1234567890,1234567890 |2023-08-30 16:51:13.694 | abcdefghijklmnopq,abcdefghi... |> select ts,concat_ws(',',v1,v2,v1,v2) from t2;ts | concat_ws(',',v1,v2,v1,v2) |
===========================================================2023-08-30 16:50:51.997 | 1234567890,1234567890,12345... |2023-08-30 16:51:13.694 | abcdefghijklmnopq,abcdefghi... |> set max_binary_display_width 60;
> select ts,concat_ws(',',v1,v2,v1,v2) from t2;ts | concat_ws(',',v1,v2,v1,v2) |
=========================================================================================2023-08-30 16:50:51.997 | 1234567890,1234567890,1234567890,1234567890 |2023-08-30 16:51:13.694 | abcdefghijklmnopq,abcdefghijklmnopq,abcdefghijklmnopq,abc... |> select concat_ws(' ','a','b','c','d','e','f','g','h') from t2 limit 1;concat_ws(' ','a','b','c','d','e','f','g','h') |
=================================================a b c d e f g h |
LENGTH
LENGTH(expr)
功能说明:以字节计数的字符串长度。
返回结果类型:BIGINT。
适用数据类型:输入参数是 VARCHAR 类型或者 NCHAR 类型的字符串或者列。
嵌套子查询支持:适用于内层查询和外层查询。
适用于: 表和超级表。
示例:
> desc t2;field | type | length | note |
===============================================================================================ts | TIMESTAMP | 8 | |v1 | NCHAR | 100 | |v2 | VARCHAR | 100 | |> select ts,v1 from t2;ts | v1 |
=====================================================================2023-08-30 16:50:51.997 | 1234567890 |2023-08-30 16:51:13.694 | abcdefghijklmnopq |> select ts,char_length(v1),length(v1) from t2;ts | char_length(v1) | length(v1) |
==========================================================================2023-08-30 16:50:51.997 | 10 | 40 |2023-08-30 16:51:13.694 | 17 | 68 |> select ts,v2 from t2;ts | v2 |
=====================================================================2023-08-30 16:50:51.997 | 1234567890 |2023-08-30 16:51:13.694 | abcdefghijklmnopq |> select ts,char_length(v2),length(v2) from t2;ts | char_length(v2) | length(v2) |
==========================================================================2023-08-30 16:50:51.997 | 10 | 10 |2023-08-30 16:51:13.694 | 17 | 17 |
类型 | Bytes | 说明 |
---|---|---|
BINARY | 自定义 | 记录单字节字符串,建议只用于处理 ASCII 可见字符,中文等多字节字符需使用 NCHAR |
NCHAR | 自定义 | 记录包含多字节字符在内的字符串,如中文字符。每个 NCHAR 字符占用 4 字节的存储空间。 |
LOWER
LOWER(expr)
功能说明:将字符串参数值转换为全小写字母。
返回结果类型:与输入字段的原始类型相同。
适用数据类型:VARCHAR, NCHAR。
嵌套子查询支持:适用于内层查询和外层查询。
适用于: 表和超级表。
示例:
> select * from t2;ts | v1 | v2 |
================================================================================================================2023-08-30 16:50:51.997 | 1234567890 | 1234567890 |2023-08-30 16:51:13.694 | abcdefghijklmnopq | abcdefghijklmnopq |2023-08-31 08:32:41.830 | ABCDEFGH | IJKLMNO |> select ts,lower(v1),lower(v2) from t2;ts | lower(v1) | lower(v2) |
================================================================================================================2023-08-30 16:50:51.997 | 1234567890 | 1234567890 |2023-08-30 16:51:13.694 | abcdefghijklmnopq | abcdefghijklmnopq |2023-08-31 08:32:41.830 | abcdefgh | ijklmno |> select lower('ABCDEFGHIJKLMNO') from t2 limit 1;lower('ABCDEFGHIJKLMNO') |
===========================abcdefghijklmno |
LTRIM
LTRIM(expr)
功能说明:返回清除左侧开头空格后的字符串。
返回结果类型:与输入字段的原始类型相同。
适用数据类型:VARCHAR, NCHAR。
嵌套子查询支持:适用于内层查询和外层查询。
适用于: 表和超级表。
示例:
> insert into t2 values(now,' abc def gh','ABC def GH ');
> select * from t2;ts | v1 | v2 |
================================================================================================================2023-08-31 08:32:41.830 | ABCDEFGH | IJKLMNO |2023-08-31 08:35:45.209 | abc def gh | ABC DEF |2023-08-31 08:40:33.666 | abc def gh | ABC def GH |> select ts,ltrim(v1),ltrim(v2) from t2;ts | ltrim(v1) | ltrim(v2) |
================================================================================================================2023-08-31 08:32:41.830 | ABCDEFGH | IJKLMNO |2023-08-31 08:35:45.209 | abc def gh | ABC DEF |2023-08-31 08:40:33.666 | abc def gh | ABC def GH |> select concat('|',ltrim(' abcdef '),'|') from t2 limit 1;concat('|',ltrim(' abcdef '),'|') |
====================================|abcdef | |
RTRIM
RTRIM(expr)
功能说明:返回清除右侧结尾空格后的字符串。
返回结果类型:与输入字段的原始类型相同。
适用数据类型:VARCHAR, NCHAR。
嵌套子查询支持:适用于内层查询和外层查询。
适用于: 表和超级表。
示例:
> insert into t2 values(now,' abc def gh','ABC def GH ');
> select * from t2;ts | v1 | v2 |
================================================================================================================2023-08-31 08:32:41.830 | ABCDEFGH | IJKLMNO |2023-08-31 08:35:45.209 | abc def gh | ABC DEF |2023-08-31 08:40:33.666 | abc def gh | ABC def GH |> select ts,rtrim(v1),rtrim(v2) from t2;ts | rtrim(v1) | rtrim(v2) |
================================================================================================================2023-08-31 08:32:41.830 | ABCDEFGH | IJKLMNO |2023-08-31 08:35:45.209 | abc def gh | ABC DEF |2023-08-31 08:40:33.666 | abc def gh | ABC def GH | > select concat('|',rtrim(' abcdef '),'|') from t2 limit 1;concat('|',rtrim(' abcdef '),'|') |
====================================| abcdef| |
SUBSTR
SUBSTR(expr, pos [,len])
功能说明:从源字符串 str 中的指定位置 pos 开始取一个长度为 len 的子串并返回。如果输入参数 len 被忽略,返回的子串包含从 pos 开始的整个字串。
返回结果类型:与输入字段的原始类型相同。
适用数据类型:VARCHAR, NCHAR。输入参数 pos 可以为正数,也可以为负数。如果 pos 是正数,表示开始位置从字符串开头正数计算。如果 pos 为负数,表示开始位置从字符串结尾倒数计算。
嵌套子查询支持:适用于内层查询和外层查询。
适用于: 表和超级表。
示例:
> desc t2;field | type | length | note |
===============================================================================================ts | TIMESTAMP | 8 | |v1 | NCHAR | 100 | |v2 | VARCHAR | 100 | |> select * from t2;ts | v1 | v2 |
================================================================================================================2023-08-31 08:49:15.674 | a1234567890 | a1234567890 |> select ts,substr(v1,2),substr(v1,2,2) from t2;ts | substr(v1,2) | substr(v1,2,2) |
================================================================================================================2023-08-31 08:49:15.674 | 1234567890 | 12 |> select ts,substr(v1,2),substr(v1,2,2) from (select * from t2);ts | substr(v1,2) | substr(v1,2,2) |
================================================================================================================2023-08-31 08:49:15.674 | 1234567890 | 12 |> select substr('asdfghjkl',3,1) from t2 limit 1;substr('asdfghjkl',3,1) |
==========================d |
UPPER
UPPER(expr)
功能说明:将字符串参数值转换为全大写字母。
返回结果类型:与输入字段的原始类型相同。
适用数据类型:VARCHAR, NCHAR。
嵌套子查询支持:适用于内层查询和外层查询。
适用于: 表和超级表。
示例:
> select * from t2;ts | v1 | v2 |
================================================================================================================2023-08-31 08:49:15.674 | a1234567890 | a1234567890 |2023-08-31 08:52:41.118 | abcdef | Ghijk |> select ts,upper(v1),upper(v2) from t2;ts | upper(v1) | upper(v2) |
================================================================================================================2023-08-31 08:49:15.674 | A1234567890 | A1234567890 |2023-08-31 08:52:41.118 | ABCDEF | GHIJK |> select ts,upper(v1),upper(v2) from (select * from t2);ts | upper(v1) | upper(v2) |
================================================================================================================2023-08-31 08:49:15.674 | A1234567890 | A1234567890 |2023-08-31 08:52:41.118 | ABCDEF | GHIJK |> select upper('abcDEFghi') from t2 limit 1;upper('abcDEFghi') |
=====================ABCDEFGHI |