函数列表
StarRocks 提供了丰富的函数,方便您在日常数据查询和分析时使用。除了常见的函数分类,StarRocks 也支持 ARRAY、JSON、MAP 等半结构化函数,支持 Lambda 高阶函数。如果以上函数都不符合您的需求,您还可以自行编写 Java UDF 来满足业务需求。
您可以按照以下分类来查找目标函数。
时间日期函数
函数 | 功能 |
---|---|
add_months | 在给定的日期(DATE、DATETIME)上增加一个整数月。 |
adddate,days_add | 向日期添加指定的时间间隔。 |
convert_tz | 将给定的时间转化为另一个时区的时间。 |
current_date,curdate | 获取当前的日期,以 DATE 类型返回。 |
current_time,curtime | 获取当前的时间,以 TIME 类型返回。 |
current_timestamp | 获取当前时间,以 DATETIME 类型返回。 |
date | 从日期或时间日期表达式中截取日期部分 。 |
date_add | 向日期添加指定的时间间隔。 |
date_format | 按照 format 指定的格式来显示日期/时间数据。 |
date_slice | 根据指定的时间粒度周期,将给定的时间转化到其所在的时间粒度周期的起始或结束时刻。 |
date_sub, subdate | 从日期中减去指定的时间间隔。 |
date_trunc | 根据指定的精度级别,将一个日期时间截断。 |
datediff | 计算两个日期的差值,结果精确到天。 |
day | 返回指定日期中的天信息。 |
dayname | 返回指定日期对应的星期名称。 |
dayofmonth | 返回日期中的天信息, 返回值范围 1~31。 |
dayofweek | 返回指定日期的工作日索引值。 |
dayofyear | 计算指定日期为对应年中的哪一天。 |
days_add | 向日期添加指定的时间间隔。 |
days_diff | 计算开始时间和结束时间相差几天。 |
days_sub | 从给定日期或者日期时间中减去指定的天数,获得新的 DATETIME 结果。 |
from_days | 通过计算当前时间距离 0000-01-01 的天数,计算出当前是时间哪一天。 |
from_unixtime | 将 UNIX 时间戳转化为对应的时间格式。 |
hour | 获得指定日期中的小时信息。 |
hours_add | 给指定的日期时间增加指定的小时数。 |
hours_diff | 计算开始时间和结束时间相差多少个小时。 |
hours_sub | 从指定的日期时间中减少指定的小时数。 |
microseconds_add | 向一个日期时间添加指定的时间间隔,单位为微秒。 |
microseconds_sub | 从一个日期时间中减去指定的时间间隔,单位为微秒。 |
minute | 获得日期中的分钟的信息,返回值范围为 0~59。 |
minutes_add | 给指定的日期时间或日期增加指定的分钟数。 |
minutes_diff | 计算开始时间和结束时间相差多少分钟。 |
minutes_sub | 从指定的日期时间或日期中减去指定的分钟数。 |
month | 返回指定日期中的月份。 |
monthname | 返回指定日期对应的月份。 |
months_add | 给日期添加指定的月数。 |
months_diff | 计算开始时间和结束时间相差几个月。 |
months_sub | 从日期中减去指定的月数。 |
now | 获取当前的时间,以 DATETIME 类型返回。 |
quarter | 返回给定的日期值对应的季度,范围 1~4。 |
second | 获得日期中的秒的信息,返回值范围 0~59。 |
seconds_add | 向一个日期时间添加指定的时间间隔,单位为秒。 |
seconds_diff | 计算开始时间和结束时间相差多少秒。 |
seconds_sub | 给指定的日期时间或日期减去指定的秒数。 |
str_to_date | 按照 format 指定的格式将 str 转换为 DATETIME 类型的值。 |
str2date | 按照 format 指定的格式将 str 转换为 DATE 类型的值。 |
time_slice | 根据指定的时间粒度周期,将给定的时间转化为其所在的时间粒度周期的起始或结束时刻。 |
time_to_sec | 将 time 时间值转换为秒数。 |
timediff | 返回两个 DATETIME 类型值之间的差值,返回 TIME 类型。 |
timestamp | 将时间表达式转换为 DATETIME 值。 |
timestampadd | 将整数表达式间隔添加到日期或日期时间表达式中。 |
timestampdiff | 返回两个日期或日期时间表达式的差值。 |
to_days | 返回指定日期距离 0000-01-01 的天数。 |
to_date | 返回 DATETIME 类型值中的日期部分。 |
unix_timestamp | 将 DATE 或 DATETIME 类型的值转化为 UNIX 时间戳。 |
utc_timestamp | 返回当前 UTC 日期时间。 |
week | 根据指定的周数计算逻辑,计算指定的日期时间属于一年中的第几周。 |
weekofyear | 计算指定的日期时间属于一年中的第几周。 |
weeks_add | 向原始的日期时间加上指定周数。 |
weeks_diff | 计算开始时间和结束时间相差几周。 |
weeks_sub | 从原始的日期中减去若干周数。 |
year | 返回指定日期时间中的年份。 |
years_add | 向原始的日期时间添加指定的年数。 |
years_diff | 计算开始时间和结束时间相差几年。 |
years_sub | 从指定的日期时间中减去指定年数。 |
字符串函数
函数 | 功能 |
---|---|
append_trailing_char_if_absent | 如果字符串非空并且末尾不包含 trailing_char 字符,则将 trailing_char 字符附加到末尾。 |
ascii | 返回字符串第一个字符对应的 ASCII 码。 |
char | 根据输入的 ASCII 值返回对应的字符。 |
char_length,character_length | 返回字符串的长度。 |
concat | 将多个字符串连接起来。 |
concat_ws | 使用分隔符将两个或以上的字符串拼接成一个新的字符串。 |
ends_with | 如果字符串以指定后缀结尾,返回 true,否则返回 false。 |
find_in_set | 返回指定的字符串在一系列字符串列表中第一次出现的位置。 |
group_concat | 将结果集中的多行结果连接成一个字符串。 |
hex | 对于输入的数字或字符,返回十六进制的字符串表示形式。 |
instr | 返回子字符串在指定的字符串中第一次出现的位置。 |
left | 从字符串左边部分返回指定长度的字符。 |
length | 返回字符串的字节长度。 |
locate | 从 pos 下标开始的字符串处开始查找子字符串在某个字符串中第一次出现的位置。 |
lower | 将参数中所有的字符串转换成小写。 |
lpad | 根据指定的长度在字符串前面(左侧)追加字符。 |
ltrim | 从字符串的左侧(开始部分)移除连续出现的空格或指定字符。 |
money_format | 将数字按照货币格式输出,整数部分每隔 3 位用逗号分隔,小数部分保留 2 位。 |
null_or_empty | 如果字符串为空字符串或者 NULL 则返回 true,否则返回 false。 |
parse_url | 从目标 URL 中提取一部 分信息。 |
repeat | 将字符串重复 count 次输出,count 小于 1 时返回空字符串。 |
reverse | 将字符串或数组反转,返回的字符串或数组的顺序和源字符串或数组的顺序相反。 |
right | 从字符串右边部分返回指定长度的字符。 |
rpad | 根据指定的长度在字符串后面(右侧)追加字符。 |
rtrim | 从字符串的右侧(结尾部分)移除连续出现的空格或指定字符。 |
space | 返回由指定数量的空格组成的字符串。 |
split | 根据分隔符拆分字符串,将拆分后的所有字符串以 ARRAY 的格式返回。 |
split_part | 根据分割符拆分字符串,返回指定的分割部分。 |
starts_with | 如果字符串以指定前缀开头返回 1,否则返回 0。 |
strleft | 从字符串左边部分返回指定长度的字符。 |
strright | 从字符串右边部分返回指定长度的字符。 |
substr, substring | 返回字符串中从位置 pos 开始的指定长度的子字符串。 |
trim | 从字符串的左侧和右侧移除连续出现的空格或指定的字符。 |
ucase | 该函数与 upper 一致,将字符串转换为大写形式。 |
unhex | 将输入的字符串中的两个字符为一组转化为 16 进制的字符,然后拼接成字符串输出。 |
upper | 将字符串转换为大写形式。 |
聚合函数
函数 | 功能 |
---|---|
any_value | 在包含 GROUP BY 的聚合查询中,该函数用于从每个聚合分组中随机选择一行返回。 |
approx_count_distinct | 返回类似于 COUNT(DISTINCT col) 结果的近似值。 |
array_agg | 将一列中的值(包括空值 null)串联成一个数组 (多行转一行)。 |
avg | 用于返回选中字段的平均值。 |
bitmap | 通过 bitmap 函数实现聚合。 |
bitmap_agg | 将一列中的多行非 NULL 数值合并成一行 BITMAP 值,即多行转一行。 |
corr | 返回两个随机变量的皮尔逊相关系数. |
covar_pop | 返回两个随机变量的总体协方差。 |
covar_samp | 返回两个随机变量的样本协方差。 |
count | 返回满足条件的行数。 |
group_concat | 将结果集中的多行结果连接成一个字符串。 |
grouping | 判断一个列是否为聚合列,如果是聚合列则返回 0,否则返回 1。 |
grouping_id | 用于区分相同分组标准的分组统计结果。 |
hll_empty | 生成空 HLL 列,用于 INSERT 或导入数据时补充默认值。 |
hll_hash | 将一个数值转换为 HLL 类型。通常用于导入中,将源数据中的数值映射到 StarRocks 表中的 HLL 列类型。 |
hll_raw_agg | 用于聚合 HLL 类型的字段,返回 HLL 类型。 |
hll_union | 返回一组 HLL 值的并集。 |
hll_union_agg | 将多个 HLL 类型数据合并成一个 HLL。 |
max | 返回表达式中的最大值。 |
max_by | 返回与 y 的最大值相关联的 x 值。 |
min | 返回表达式中的最小值。 |
multi_distinct_count | 返回表达式去除重复值后的行数,功能等同于 COUNT(DISTINCT expr)。 |
multi_distinct_sum | 返回表达式去除重复值后的总和,功能等同于 sum(distinct expr)。 |
percentile_approx | 返回第 p 个百分位点的近似值。 |
percentile_cont | 计算精确百分位数。 |
percentile_disc | 计算百分位数。 |
retention | 用于计算一段时间内的用户留存情况。 |
sum | 返回指定列所有值的总和。 |
std | 返回指定列的标准差。 |
stddev,stddev_pop | 返回表达式的总体标准差。 |
stddev_samp | 返回表达式的样本标准差。 |
variance, variance_pop, var_pop | 返回表达式的方差。 |
var_samp | 返回表达式的样本方差。 |
window_funnel | 搜索滑动时间窗口内的事件列表,计算条件匹配的事件链里的最大连续事件数。 |
数学函数
函数 | 功能 |
---|---|
abs | 计算绝对值。 |
acos | 计算反余弦值(单位为弧度)。 |
asin | 计算反正弦值(单位为弧度)。 |
atan | 计算反正切值(单位为弧度)。 |
atan2 | 通过使用两个参数的符号确定象限,计算 x/y 的反正切的主值,返回值在 [-π, π] 范围内。 |
bin | 将输入的参数转成二进制。 |
ceil, dceil | 返回大于或等于 x 的最小整数。 |
ceiling | 返回大于或等于 x 的最小整数。 |
conv | 对输入的参数进行进制转换。 |
cos | 计算余弦值。 |
cosine_similarity | 计算两个向量的余弦夹角来评估向量之间的相似度。 |
cosine_similarity_norm | 计算两个归一化向量的余弦夹角来评估向量之间的相似度。 |
cot | 计算余切值(单位为弧度)。 |
degrees | 将参数 x 转成角度,x 是弧度。 |
divide | 除法函数,返回 x 除以 y 的结果, |
e | 返回自然对数函数的底数。 |
exp, dexp | 返回 e 的 x 次幂。 |
floor, dfloor | 返回不大于 x 的最大整数值。 |
fmod | 取模函数,返回两个数相除之后的浮点余数。 |
greatest | 返回多个输入参数中的最大值。 |
least | 返回多个输入参数中的最小值。 |
ln, dlog1, log | 返回参数 x 的自然对数,以 e 为底数。 |
log | 返回以 base 为底数的 x 的对数。如果未指定 base,则该函数等同于 ln()。 |
log2 | 返回以 2 为底数的 x 的对数。 |
log10, dlog10 | 返回以 10 为底数的 x 的对数。 |
mod | 取模函数,返回两个数相除之后的余数。 |
multiply | 计算两个参数的乘积。 |
negative | 返回参数的负数。 |
pi | 返回圆周率。 |
pmod | 取模函数,返回两个数相除之后的正余数。 |
positive | 返回表达式的结果。 |
pow, power, dpow, fpow | 返回参数 x 的 y 次方。 |
radians | 将参数 x 转为弧度,x 是角度。 |
rand, random | 返回一个 0 (包含) 到 1(不包含)之间的随机浮点数。 |
round, dround | 按照指定的小数位数对数值进行四舍五入。 |
sign | 返回参数 x 的符号。 |
sin | 计算参数 x 的正弦,x 为弧度值。 |
sqrt, dsqrt | 计算参数的平方根。 |
square | 计算参数的平方。 |
tan | 计算参数 x 的正切,x 为弧度值。 |
truncate | 返回数值 x 保留到小数点后 y 位的值。 |
Array 函数
函数 | 功能 |
---|---|
array_agg | 将一列中的值(包括空值 null)串联成一个数组 (多行转一行)。 |
array_append | 在数组末尾添加一个新的元素。 |
array_avg | 求取一个ARRAY中的所有数据的平均数。 |
array_concat | 将多个数组拼接成一个数组。 |
array_contains | 检查数组中是否包含某个元素,是的话返回 1,否则返回 0。 |
array_contains_all | 检 查数组 arr1 是否包含数组 arr2 中的所有元素。 |
array_cum_sum | 对数组中的元素进行向前累加。 |
array_difference | 对于数值型数组,返回相邻两个元素的差(从后者中减去前者)构成的数组。 |
array_distinct | 数组元素去重。 |
array_filter | 根据设定的过滤条件返回数组中匹配的元素。 |
array_intersect | 对于多个同类型数组,返回交集。 |
array_join | 将数组中的所有元素连接生成一个字符串。 |
array_length | 计算数组中的元素个数。 |
array_map | 用于将输入的 arr1,arr2 等数组按照 lambda_function 进行转换,输出一个新的数组。 |
array_max | 求取一个ARRAY中的所有数据中的最大值。 |
array_min | 求取一个ARRAY中的所有数据中的最小值。 |
arrays_overlap | 判断两个相同类型的数组中是否包含相同的元素。 |
array_position | 获取数组中某个元素位置,是的话返回位置,否则返回 0. |
array_remove | 从数组中移除指定元素。 |
array_slice | 返回数组的一个数组片段。 |
array_sort | 对数组中的元素进行升序排列。 |
array_sortby | 对数组中的元素根据另外一个键值数组元素或者 Lambda 函数生成的键值数组元素进行升序排列。 |
array_sum | 对数组中的所有元素求和。 |
array_to_bitmap | 将 array 类型转化为 bitmap 类型。 |
reverse | 将字符串或数组反转,返回的字符串或数组的顺序和源字符串或数组的顺序相反。 |
unnest | 表函数,用于将一个数组展开成多行。 |
Bitmap 函数
函数 | 功能 |
---|---|
bitmap_agg | 将一列中的多行非 NULL 数值合并成一行 BITMAP 值,即多行转一行。 |
bitmap_and | 计算两个 bitmap 的交集,返回新的 bitmap。 |
bitmap_andnot | 计算两个输入的 bitmap 的差集。 |
bitmap_contains | 计算输入值是否在 Bitmap 列中。 |
bitmap_count | 统计 bitmap 中不重复值的个数。 |
bitmap_empty | 返回一个空 bitmap,主要用于 insert 或 stream load 时填充默认值。 |
bitmap_from_string | 将一个字符串转化为一个 bitmap,字符串由逗号分隔的一组 UInt32 数字组成。 |
bitmap_hash | 对任意类型的输入计算 32 位的哈希值,返回包含该哈希值的 bitmap。 |
bitmap_has_any | 计算两个 Bitmap 列是否存在相交元素。 |
bitmap_intersect | 求一组 bitmap 值的交集。 |
bitmap_max | 获取 Bitmap 中的最大值。 |
bitmap_min | 获取 Bitmap 中的最小值。 |
bitmap_or | 计算两个 bitmap 的并集,返回新的 bitmap。 |
bitmap_remove | 从 Bitmap 中删除指定的数值。 |
bitmap_to_array | 将 BITMAP 中的所有值组合成 BIGINT 类型的数组。 |
bitmap_to_base64 | 将 bitmap 转换为 Base64 字符串。 |
base64_to_bitmap | 将 Base64 编码的字符串转化为 Bitmap。 |
bitmap_to_string | 将一个 bitmap 转化成一个逗号分隔的字符串。 |
bitmap_union | 求一组 bitmap 值的并集。 |
bitmap_union_count | 计算一组 bitmap 值的并集,并返回并集的基数。 |
bitmap_union_int | 计算 TINYINT,SMALLINT 和 INT 类型的列中不重复值的个数。 |
bitmap_xor | 计算两个 Bitmap 中不重复元素所构成的集合。 |
intersect_count | 求 bitmap 交集大小。 |
subdivide_bitmap | 将大 bitmap 拆成多个子 bitmap。 |
sub_bitmap | 计算两个 bitmap 之间相同元素的个数。 |
to_bitmap | 将输入值转换为 bitmap。 |
JSON 函数
函数 | 功能 |
---|---|
json_array | 接收 SQL 数组并返回一个 JSON 类型的数组。 |
json_object | 接收键值集合,返回一个包含这些键值对的 JSON 类型的对象。 |
parse_json | 将字符串类型的数据构造为 JSON 类型的数据。 |
箭头函数 | 箭头函数可以查询 JSON 对象中指定路径的值。 |
cast | 实现 JSON 类型数据与 SQL 类型间的相互转换。 |
get_json_double | 解析并获取 JSON 字符串内指定路径中的浮点型内容。 |
get_json_int | 解析并获取 JSON 字符串内指定路径中的整型内容。 |
get_json_string,get_json_object | 解析并获取 JSON 字符串内指定路径中的字符串。 |
json_each | 将 JSON 对象的最外层按照键和值展开为两列,返回一行或多行数据的集合。 |
json_exists | 查询 JSON 对象中指定路径是否存在满足特定条件的值。 |
json_keys | 返回 JSON 对象中所有最上层成员 (key) 组成的数组。 |
json_length | 计算 JSON 字符串的长度。 |
json_query | 查询 JSON 对象中指定路径(json_path)的值,并输出 JSON 类型的结果。 |
json_string | 将 JSON 类型转化为 JSON 字符串。 |
Map 函数
函数 | 功能 |
---|---|
map_keys | 返回 Map 中所有 key 组成的数组。 |
map_size | 计算 Map 中元素的个数。 |
map_values | 返回 Map 中所有 Value 组成的数组。 |
表函数
函数 | 功能 |
---|---|
json_each | 将 JSON 对象的最外层按照键和值展开为两列,返回一行或多行数据的集合。 |
subdivide_bitmap | 将大 bitmap 拆成多个子 bitmap。 |
unnest | 用于将一个数组展开成多行。 |
Bit 函数
函数 | 功能 |
---|---|
bitand | 返回两个数值在按位进行 AND 运算后的结果。 |
bitnot | 返回参数 x 进行取反运算后的结果。 |
bitor | 返回两个数值在按位进行 OR 运算后的结果。 |
bitxor | 返回两个数值在按位 XOR 运算后的结果。 |
bit_shift_left | 将一个数值或数值表达式的二进制表示向左移动指定的位数。该函数执行算术左移。 |
bit_shift_right | 将一个数值或者数值表达式的二进制表示向右移动指定的位数。该函数执行算术右移。 |
bit_shift_right_logical | 将一个数值或者数值表达式的二进制表示向右移动指定的位数。该函数执行逻辑右移。 |
加密函数
函数 | 功能 |
---|---|
aes_decrypt | 使用 AES_128_ECB 算法将字符串解密并返回一个二进制字符串。 |
aes_encrypt | 使用 AES_128_ECB 算法对字符串进行加密并返回一个二进制字符串。 |
from_base64 | 将 Base64 编码过的字符 串 str 进行解码。反向函数为 to_base64。 |
md5 | 使用 MD5 加密算法将给定字符串进行加密,输出一个 128-bit 的校验和 (checksum),以 32 字符的十六进制字符串表示。 |
md5sum | 计算多个输入参数的 MD5 128-bit 校验和 (checksum),以 32 字符的十六进制字符串表示。 |
sha2 | 计算 SHA-2 系列哈希函数 (SHA-224/SHA-256/SHA-384/SHA-512)。 |
sm3 | 使用 SM3 摘要算法,将字符串加密为 256-bit 的 十六进制字符串,每 32 位用空格分隔。 |
to_base64 | 将字符串 str 进行 Base64 编码。反向函数为 from_base64。 |
模糊/正则匹配函数
函数 | 功能 |
---|---|
like | 判断字符串是否模糊匹配给定的模式 pattern 。 |
regexp | 判断字符串是否匹配给定的正则表达式 pattern 。 |
regexp_extract | 对字符串进行正则匹配,抽取符合 pattern 的第 pos 个匹配部分,需要 pattern 完全匹配 str 中的某部分,才能返回 pattern 部分中需匹配部分,如果没有匹配就返回空字符串。 |
regexp_replace | 对字符串进行正则匹配,将命中 pattern 的部分使用 repl 来进行替换。 |
条件函数
函数 | 功能 |
---|---|
case | 将表达式与一个值比较。如果能找到匹配项,则返回 THEN 中的结果。如果未找到匹配项,则返回 ELSE 中的结果。 |
coalesce | 从左向右返回参数中的第一个非 NULL 表达式。 |
if | 若参数 expr1 成立,返回 结果 expr2;否则返回结果 expr3。 |
ifnull | 若 expr1 不为 NULL,返回 expr1。若 expr1 为 NULL,返回 expr2。 |
nullif | 若参数 expr1 与 expr2 相等,则返回 NULL,否则返回 expr1 的值。 |
百分位函数
函数 | 功能 |
---|---|
percentile_approx_raw | 计算给定参数 x 的百分位数。 |
percentile_empty | 构造一个 percentile 类型的数值,主要用于 INSERT 或 Stream Load 导入时填充默认值。 |
percentile_hash | 将 double 类型数值构造成 percentile 类型数值。 |
percentile_union | 用于对分组结果进行聚合。 |
标量函数
函数 | 功能 |
---|---|
hll_cardinality | 用于计算 HLL 类型值的基数。 |
工具函数
函数 | 功能 |
---|---|
catalog | 查询当前会话所在的 Catalog。 |
current_version | 获取当前 StarRocks 的版本 |
database | 查询当前会话所在的数据库。 |
host_name | 获取计算所在节点的主机名。 |
isnull | 判断输入值是否为 NULL。 |
last_query_id | 返回最近一次执行的查询的 ID。 |
sleep | 将当前正在执行的线程休眠 x 秒。 |
uuid | 以 VARCHAR 形式返回一个随机的 UUID 值。长度为36个字符,包含32个十六进制字符,由4个连字符进行连接,形式为8-4-4-4-12。 |
uuid_numeric | 返回一个数值类型的随机 UUID 值。 |
version | 返回当前 MySQL 数据库的版本。 |
地理位置函数
函数 | 功能 |
---|---|
ST_AsText, ST_AsWKT | 将一个几何图形转化为 WKT(Well Known Text)的表示形式。 |
st_circle | 将一个 WKT (Well Known Text) 转化为地球球面上的一个圆。 |
st_contains | 判断几何图形 shape1 是否完全能够包含几何图 形 shape2。 |
st_distance_sphere | 计算地球两点之间的球面距离,单位是米。 |
st_geometryfromtext | 将一个 WKT(Well Known Text)转化为对应的内存的几何形式。 |
st_linefromtext, ST_LineStringFromText | 将一个 WKT(Well Known Text)转化为一个 Line 形式的内存表现形式。 |
st_point | 通过给定的 X 坐标值、Y 坐标值返回对应的 Point。 |
st_polygon | 将一个 WKT(Well Known Text)转化为对应的多边形内存形式。 |
st_x | 当 point 是一个合法的 POINT 类型时,返回对应的 X 坐标值。 |
st_y | 当 point 是一个合法的 POINT 类型时,返回对应的 Y 坐标值。 |
Hash 函数
函数 | 功能 |
---|---|
murmur_hash3_32 | 返回输入字符串的 32 位 murmur3 hash 值。 |