Skip to content

函数总览

数学函数

函数名
返回值类型
函数解释平台示例用例输出结果
absfloat64绝对值函数SELECT abs(-1)1
expfloat64返回 ex 次方SELECT exp(2)7.389056099
logfloat64返回自然对数 (以 e 为底的对数)SELECT log(10)2.302585093
log2float64返回以 2 为底的对数SELECT log2(65536)16
log10float64返回以 10 为底的对数SELECT log10(100)2
pow/powerfloat64返回 xy 次方SELECT pow(2, 2)/SELECT power(2, 2)4
sqrtfloat64返回 x 的平方根SELECT sqrt(16)4
cosfloat64求余弦值SELECT cos(45)0.525321989
sinfloat64求正弦值SELECT sin(45)0.850903525
tanfloat64求正切值SELECT tan(45)1.619775191
acosfloat64x 的反余弦值SELECT acos(0.75)0.722734248
asinfloat64求反正弦值SELECT asin(0.2)0.201357921
atanfloat64求反正切值SELECT atan(0.75)0.643501109
atan2float64求反正切值SELECT atan2(0.75, 1)0.643501109
ceilfloat64向上取整SELECT ceil(1.2)2
floorfloat64向下取整SELECT floor(1.2)1
roundfloat64返回最接近 x 的整数SELECT round(1.2)1
signInt64返回 x的符号SELECT sign(1)1
pifloat64返回圆周率SELECT pi()3.141592654
plot绘图值

字符串函数

函数名
返回值类型
函数解释平台示例用例输出结果
asciiInt64对输入参数 s 求 ASCII 值SELECT ascii("A")65
binString将输入参数 n 转为二进制格式SELECT bin(127)1111111
concatString将参数 str... 进行连接SELECT concat("A", "B")AB
concat_wsString将参数使用 sep 进行连接SELECT concat_ws(",", "A", "B")A,B
eltString从第二个参数以后得参数列表中取 nth 个值SELECT elt(1, "A", "B")A
fieldInt64获取 target 在第二个参数以后得参数列表中的位置SELECT field("A", "B", "A")2
lcase/lowerString将参数 s 转为小写SELECT lower/lcase("A")a
leftString返回第一个参数 s 最左边的 N 个字符SELECT left("ABCD", 2)AB
rightString返回第一个参数 s 最右边的 N 个字符SELECT right("ABCD", 2)CD
length/strlenInt64返回传入参数 s 的字节长度SELECT length/strlen("麦杰科技")12
locateInt64从第二个参数 str 中获取第一个参数 substr 的开始的位置SELECT locate("bar", "foobarbar")/locate("bar", "foobarbar", 5)4/7
lpadString在第一个参数 str 的左边填充第三个参数 padstr,使第一个参数 str 的长度达到第二个参数 lenSELECT lpad("hi", 4, "?")/lpad("hi", 1, "?")??hi/h
ltrimString去除参数 str 左边的空格SELECT ltrim("  foobar")foobar
midString从字符串 strpos 位置截取长度为 len 的子字符串SELECT mid("foobar", 2, 3)oob
octStringN 为 Number 时,返回 N 的八进制字符串SELECT oct(100)144
repeatString将字符串 s 重复 NSELECT repeat("AB", 2)ABAB
replaceString将字符串 s2 替代字符串 s 中的字符串 s1SELECT replace("magus", "a", "8")m8gus
reverseString将字符串 s 的顺序翻转SELECT reverse("magus")sugam
rtrimString去除字符串 s 尾部的空格SELECT rtrim("magus ")magus
spaceString返回 N 个空格SELECT space(3)
strcmpInt64比较字符串 s1s2SELECT strcmp("magus", "magus")0
substr/substringString从字符串 sstart 位置截取长度为 length 的子字符串SELECT substr/substring("magus", 2, 3)agu
substring_indexString返回从字符串 s 的第 count 个出现的分隔符 delimiter 之后的子串SELECT substring_index("magus", "a", 1)/substring_index("magus", "a", -1)m/gus
trimString去掉字符串 s 开始和结尾处的空格SELECT trim(" magus ")magus
upper/ucaseString将字符串 s 转为大写SELECT upper/ucase("magus")MAGUS
hexString将字符串或数字转为 16 进制SELECT hex("abc") /hex(321)616263/141
unhexString将参数中的每对十六进制数字解释为一个数字,并将其转换为该数字表示的字符SELECT unhex("616263")abc
rpadString在第一个参数 str 的右边填充第三个参数 padstr,使第一个参数 str 的长度达到第二个参数 lenSELECT rpad("hi", 4, "?")/rpad("hi", 1, "?")hi??/h
bit_lengthString返回 str 的字节长度,类型为 Int64SELECT bit_length("text")32
char_length/character_lengthInt64返回 str 的字符长度SELECT char_length("magus")/char_length("麦杰科技")5/4
find_in_setInt64找到 strstrList 中的位置,strList 需为以 , 分割的字符串SELECT find_in_set("a", "m,a,g,u,s")2
to_string/tostringStringany 参数转为 String,如果未传入 sep 参数,则分隔符默认为 ,SELECT to_string/tostring(now())2024-03-09 18:06:58.6259823+08:00

聚合函数

具体示列请参考详细文档

函数名
返回值类型
函数解释
countInt64统计行数或非空值的数量
sumfloat64求和
avgfloat64平均值
min/maxexpr 相同最小值/最大值
first/lastexpr 相同第一个/最后一个
first_row/last_rowexpr 相同返回第一行或最后一行,按主时间列排序
std/stddev/stddev_popfloat64用于计算一组数值的总体标准差
stddev_sampfloat64用于计算一组数值的样本标准差
[variance/var_pop](4.聚合函数.md#variancevar_pop- 总体标准方差)float64方差 计算 Σ((x - x̅)^2) / n,其中 n 是样本大小,x̅ 是 x 的平均值
var_sampfloat64方差 计算 Σ((x - x̅)^2) / n,其中 n 是样本大小,x̅ 是 x 的平均值

窗口函数

函数签名

参数

参数名参数解释
time_column用于窗口切分的时间列
everyduration 表示每个窗口的长度,格式为 <int><unit>
ignore_fractions指定划分时间槽的方式,默认为 true
create_empty是否为空的时间槽返回数据,默认为 true

查询规则

规则规则解释
时间对齐对于大于小时的时间单位,窗口将对齐到查询时区的一天的开始。查询的时区由开始时间确定
时间包含/排除全局窗口的开始和结束时间由 WHERE 子句确定

示例用法

时间函数

函数名
返回值类型
函数解释平台示例用例输出结果
datediffInt64计算日期 startTimeendTime 之间相差的天数SELECT datediff("2021-01-01", "2021-01-02")-1
time_likeInt64时间 likeSELECT time_like("2021-11-01", "%11-0%")1
time_equalInt64判断 timestr1timestr2 是否相等SELECT time_equal("2021-11-01", "2021-11-02")0
time_not_equalInt64判断 timestr1timestr2 是否不相等SELECT time_not_equal("2021-11-01", "2021-11-02")1
time_greaterInt64判断 timestr1 是否大于 timestr2SELECT time_greater("2021-11-01", "2021-11-02")0
time_greater_equalInt64判断 timestr1 是否大于等于 timestr2SELECT time_greater("2021-11-01", "2021-11-02")0
time_lessInt64判断 timestr1 是否小于 timestr2SELECT time_less("2021-11-01", "2021-11-02")1
time_less_equalInt64判断 timestr1 是否小于等于 timestr2SELECT time_less_equal("2021-11-01", "2021-11-02")1
time_betweenInt64判断 timestr1 是否在 timestr2 和 timestr3 之间SELECT time_between("2021-11-01", "2021-10-01", "2021-12-01")1
time_between_equalInt64判断 timestr1 是否在 timestr2 和 timestr3 之间或相等SELECT time_between_equal("2021-11-01", "2021-10-01", "2021-12-01")1
time_addString返回 t1 加上 t2 之后的时间SELECT time_add("2021-10-01T00:00:00Z", "10m")2021-10-01T00:10:00Z
time_minusString返回 t1 减去 t2 之后的时间SELECT time_minus("2021-10-01T00:00:00Z", "10m")2021-09-30T00:50:00Z
curdate/current_dateString返回当前时间的日期部分SELECT curdate()2021-10-01
current_time/curtimeString返回当前时间的时间部分SELECT current_time()15:01:02
current_timestampDateTime返回当前时间SELECT current_timestamp()2021-01-01T00:00:00.742Z
to_unixtimeInt64t转为 unix timestampSELECT to_unixtime("1970-01-01T08:00:01Z")28801
dateString获取t的日期部分SELECT date("2021-10-01T00:00:00Z")2021-10-01
yearInt64获取t的年份SELECT year("2021-10-01T00:00:00Z")2021
monthInt64获取t的月份SELECT month("2021-10-01T00:00:00Z")10
day/dayofmonthInt64获取t在日期部分SELECT day("2021-10-23T00:00:00Z")23
hourInt64获取t的小时部分SELECT hour("2021-10-01T10:00:00Z")10
minuteInt64获取t的分钟部分SELECT minute("2021-10-01T00:20:00Z")20
secondInt64获取t的秒SELECT second("2021-10-01T00:20:30Z")30
daynameString返回t是星期几SELECT dayname("2021-10-01T00:00:00Z")Friday
dayofweekInt64获取t是一周的第几天SELECT dayofweek("2021-06-10T00:00:00Z")5
dayofyearInt64获取t是一年中的第几天SELECT dayofyear("2020-02-29T00:00:00Z")60
from_daysString将数值 d 转为日期SELECT from_days(36500)0099-12-07
to_daysInt64获取t距离 0000-00-00 的天数SELECT to_days("2007-10-07T00:00:00Z")733321
from_unixtimeDateTimetsunix 时间戳转为时间SELECT from_unixtime(1623226634)2021-06-09T16:17:14Z
now/localtime/localtimestamp/sysdateDateTime返回当前时间SELECT now()2021-10-01T15:04:05Z
makedate/make_dateString根据小时h,分钟m和秒值s创建并返回时间值SELECT maketime(16, 20, 59)16:20:59
monthnameString返回t的月份的英文名SELECT monthname("2021-01-01T00:00:00Z")January
sec_to_timeString根据秒数s返回时间部分SELECT sec_to_time(1234)00:20:34
timeString获取t的时间部分SELECT time("2021-10-01T15:04:05Z")15:04:05
time_to_secInt64t的时间部分转为秒SELECT time_to_sec("10:20:30")37230
timediffString返回 t1t2 的差异部分SELECT timediff("2000-01-01T00:00:00Z", "2021-06-09T00:00:00Z")-187920:00:00
utc_dateString获取当前 UTC 时间的日期部分SELECT utc_date()2021-10-01
utc_timeString获取当前 UTC 时间的时间部分SELECT utc_time()15:04:05
utc_timestampDateTime获取当前 UTC 时间SELECT utc_timestamp()2021-10-01T15:04:05Z
weekInt64返回t的在一年中周数SELECT week("2021-02-20T00:00:00Z")7
yearweekInt64返回t的年份及周数SELECT yearweek("2021-10-01T00:00:00Z")202139
quarterInt64返回t是第几季度SELECT quarter("2021-10-01T00:00:00Z")4
unix_timestampInt64返回 unix 时间戳SELECT unix_timestamp()/unix_timestamp("1970-01-01T00:00:01Z")1603041230/1
strftimeString将时间tm转为 layout 格式的字符串SELECT strftime("2021-10-11T15:04:05Z", "YYYY")2021
strptimeDateTimelayout 格式的字符串 v 转为时间SELECT strptime("2021-11-01", "YYYY-MM-dd")/strptime("15:04:05", "HH:mm:ss")2021-11-01T00:00:00Z/0000-01-01T15:04:05Z
f32_to_f64Float64将参数 f 转为 Float64SELECT f32_to_f64(10)10
isnullInt8返回 e 是否为 NULLSELECT isnull("")/isnull(null)0/1
gap_fillany按时间序列插值select gap_fill(col, method("prev")) from ...

转换函数

to_int(8|16|32|64)

转换一个输入值为[Int]

函数返回类型示列结果
to_int8结果为Int8数据类型SELECT to_int8(8.8)8
to_int16结果为Int16数据类型SELECT to_int16('16')16
to_int32结果为Int32数据类型SELECT to_int32(32)32
to_int64结果为Int64数据类型SELECT to_int64("nan")-9223372036854775808

to_int(8|16|32|64)_or_zero

函数需要一个字符类型的入参,然后尝试把它转为Int (8 | 16 | 32 | 64),如果转换失败直接返回 0

函数返回类型示列结果
to_int8_or_zero结果为Int8数据类型SELECT to_int8_or_zero('123qwe123')0
to_int64_or_zero结果为Int64数据类型SELECT to_int64_or_zero('123123')123123

to_int(8|16|32|64)_or_null

这个函数需要一个字符类型的入参,然后尝试把它转为Int (8 | 16 | 32 | 64),如果转换失败直接返回NULL

函数返回类型示列结果
to_int8_or_null结果为Int8数据类型SELECT to_int8_or_null('123qwe123')NULL
to_int64_or_null结果为Int64数据类型SELECT to_int64_or_null('123123')123123

随机函数

函数名
返回值类型
函数解释平台示例用例输出结果
randFloat64返回 0 到 1 的随机数 (随机数小于 1,大于等于 0)SELECT rand()0.619775191
rand_i32Int32返回 -2,147,483,6482,147,483,647 的随机数 (随机数小于 2,147,483,647 大于等于 -2,147,483,648)SELECT rand_i32()1813461669
rand_i32nInt32返回 -2,147,483,6482,147,483,647 的随机数 (随机数小于 2,147,483,647,大于等于 -2,147,483,648,随机数小于n)SELECT rand_i32N(500)479
rand_i32_rangeInt32返回 -2,147,483,6482,147,483,647 的随机数 (随机数小于2,147,483,647,大于等于-2,147,483,648,随机数大于等于n,小于s)SELECT rand_i32_range(100,800)243
rand_i64Int64返回 -92233720368547758089223372036854775808 的随机数 (随机数小于9223372036854775808大于等于-9223372036854775808)SELECT rand_i64()7103967124180070000
rand_i64nInt64返回 -92233720368547758089223372036854775808 的随机数 (随机数小于9223372036854775808大于等于-9223372036854775808,随机数小于n)SELECT rand_i64n(80000)7084
rand_i64_rangeInt64返回 -92233720368547758089223372036854775808 的随机数 (随机数小于9223372036854775808大于等于-9223372036854775808,随机数大于等于n,小于s)SELECT rand_i64_range(50000,800000000)278901588
rand_f32Float32返回  0~1 Float32 类型随机数SELECT rand_f32()0.3273061
rand_f64Float64返回 0~1 的 Float64 类型随机数SELECT rand_f64()0.896645947

UUID 函数

函数名
返回值类型
函数解释平台示例用例输出结果
uuid4String生成一个 UUID Version4 规范的字符串SELECT uuid4()086407643-5a4b-4421-be15-546b871600ae
uuid6String生成一个 UUID Version6 规范的字符串SELECT uuid6()01eee122-e974-62e1-85e3-047c160bfb4c
uuid7String生成一个 UUID Version7 规范的字符串SELECT uuid7()018e3751-d30a-7381-9901-b3d3082f4fc3
to_uuidUUID把一个满足 UUID 规范的字符串格式化为 UUID 对象select to_uuid("4d07781e-f771-4257-a622-9ac003bf88e1")4d07781e-f771-4257-a622-9ac003bf88e1