今天分享几个 Flink1.17 新版本中常见的一些 SQL 函数的使用方式。
1 时间函数
CURRENT_TIME() 返回当前时间(时分秒)
CURRENT_DATE() 返回当前日期(年月日)
LOCALTIME() 返回当前时区的当前时间(时分秒)
LOCALTIMESTAMP() 返回当前时区的当前时间戳(年月日时分秒)
SELECT CURRENT_TIME(), CURRENT_DATE(), LOCALTIME(), LOCALTIMESTAMP()
执行以上 SQL 语句会返回当前时间和日期的值,例如:
CURRENT_TIME | CURRENT_DATE | LOCALTIME | LOCALTIMESTAMP |
---|---|---|---|
13:45:30.000 | 2022-04-19 | 13:45:30 | 2022-04-19 13:45:30 |
2 数值函数
ABS(n) 返回 n 的值
CEIL(n) 返回不小于 n 的小整数
FLOOR(n) 返回不大于 n 的大整数
LOG(n[,base]) 返回 n 的对数,可指定底数
POWER(n,exponent) 返回 n 的 exponent 次幂
ROUND(n[,d]) 返回四舍五入到 d 位小数的 n
SIGN(n) 返回 n 的符号(1、0 或 -1)
SELECT ABS(-10), CEIL(3.14), FLOOR(3.14), LOG(100, 10),
POWER(2, 3), ROUND(3.14159, 2), SIGN(-10)
执行以上 SQL 语句会返回数值函数的计算结果,例如:
10 | 4 | 3 | 2.000 | 8.000 | 3.14 | -1 |
---|
3 字符串函数
CONCAT(s1,s2,...) 将多个字符串连接为一个字符串
LENGTH(s) 返回字符串 s 的长度
LOWER(s) 将字符串 s 转换为小写
UPPER(s) 将字符串 s 转换为大写
TRIM([BOTH | LEADING | TRAILING] trimStr FROM s) 去除字符串 s 开头、结尾或两端的 trimStr 字符串
SELECT CONCAT('Hello', ' ', 'world'), LENGTH('Hello'), LOWER('Hello'),
UPPER('Hello'), TRIM('x' FROM 'xxxHelloxxx')
执行以上 SQL 语句会返回字符串函数的计算结果,如下所示:
Hello world | 5 | hello | HELLO | xxHelloxxx |
---|
4 数组函数
ARRAY[length](v1, v2, ..., vn) 创建一个长度为 length 的数组,元素为 v1, v2, …, vn
ARRAY[1, v2, ..., vn] 创建一个包含元素 1, v2, …, vn 的数组
CARDINALITY(a) 返回数组 a 的长度
ELEMENT(a, n) 返回数组 a 的第 n 个元素
ARRAY_CONTAINS(a, v) 判断数组 a 是否包含元素 v
SELECT ARRAY[1, 2, 3], ARRAY[1, 2] || ARRAY[3],
CARDINALITY(ARRAY[1, 2, 3]), ELEMENT(ARRAY[1, 2, 3], 2),
ARRAY_CONTAINS(ARRAY[1, 2, 3], 2)
执行以上 SQL 语句会返回数组函数的计算结果,例如:
[1, 2, 3] | [1, 2, 3] | 3 | 2 | true |
---|
以上就是关于 Flink 1.17 版本中一些常用的函数。