校验版本为flink 1.13.6
参考链接:fink sql内置函数
算数函数
余数: number1%number2
返回number1除以number2的余数
select 5%3;
-- 2
select 8%5;
-- 3
次方:power(number1,number2)
返回number1的number2次方
select power(2,3);
-- 8
select power(3,6);
-- 729
绝对值:abs(number)
返回number的绝对值
select abs(-6);
-- 6
select abs(9);
-- 9
select abs(0);
-- 0
开跟: sqrt(number)
返回number的根号
select sqrt(9);
-- 3
select sqrt(16);
-- 4
自然对数: ln(number)
返回number的自然对数
select ln(3);
-- 1.0986122886681098
select ln(27);
-- 3.295836866004329
10的对数: log10()
返回以10为底的对数
select log10(10);
-- 1
select log10(100);
-- 2
2的对数: log2()
返回以2为底的对数
select log2(4);
-- 2
select log2(16);
-- 4
指定数的对数: log(number1, number2)
返回以number1为底的对数
select log(2,4);
-- 2
select log(2,16);
-- 4
注: 如果只输入一个参数,则是以自然数为底的对数
自然常数e的次方: exp(number)
返回自然常数e的n次方
select exp(1);
-- 2.718281828459045
select exp(2);
-- 7.38905609893065
向上取整: ceil(number)
返回number的向上整数
select ceil(2.3);
-- 3
select ceil(-2.3);
-- -2
向下取整: floor
返回number的向下整数
select floor(2.3);
-- 2
select floor(-2.3);
-- -3
正弦值: sin(numner)
返回number的正弦值
select sin(30);
--
不应该是0.5的吗???没明白
反正弦值: asin(number)
返回数值的反正弦值
select asin(0.479425538604203);
-- 0.5
双曲正弦: sinh(number)
返回数值的双曲正弦
select sinh(30);
-- 5.343237290762231
余弦值: cos(number)
返回数值的余弦值
select cos(60);
-- -0.9524129804151563
正切值: tan(number)
返回数值的正切值
余切值: cot(number)
四舍五入: round(number,int n)
返回number精度为n的数值
select round(5.325, 2);
-- 5.33
select round(5.324, 2);
-- 5.32
如果没有第二个参数,则返回四舍五入的整数
随机数: rand()
返回0-1的随机数
rand_integer(int1, int2)
返回0-int1的随机数
数字截取: truncare(number1, int1)
返回截断为整数 2 位小数的数字。如果数字 1 或整数 2 为 NULL,则返回 NULL。如果 integer2 为 0,则结果没有小数点或小数部分。integer2 可以为负数,导致值小数点左侧的整数 2 位变为零。此函数还可以只传入一个 numeric1 参数,并且不能设置 Integer2 来使用。如果未设置 Integer2,则该函数将截断,就好像 Integer2 为 0 一样。例如 42.324.截断(2) 到 42.34。和 42.324.truncate() 到 42.0。
字符串函数
字符串拼接:string1 || string2
返回两个字符串拼接的结果
select 'fu' || 'yun';
-- fuyun
字符个数: char_length()
返回字符个数
select char_length('fuyun');
-- 5
字母转换为大写: upper()
返回大写字母
select upper('fuyun');
-- FUYUN
字母转换为小写: ````lower()```
返回小写字母
select lower('Fuyun');
-- fuyun
字符串位置: position(string1 in string2)
返回字符串1在字符串2的位置,位置从1开始,如果不在字符串2中,返回0,如果出现多次,返回第一次出现的位置
select position('u' in 'fuyun');
-- 2
select position('a' in 'fuyun');
-- 0
去除字符串两边的字符串字符串: trim(string1 from string2)
去除字符串2中两边包含字符串1,如果只有一个字符串参数,则去除字符串两边的空格。
select trim(' fu yun ');
-- fu yun
select trim('ab' from 'ab fu yun ab');
-- fu yun
ltrim(string)
去除左边的空格
rtrim(string)
去除右边的空格
字符串重复次数: repeat(string, int)
select repeat('i am fuyun.', 2);
-- i am fuyun.i am fuyun.
字符串替换: regexp_replace(string1, string2, string3)
将字符串1中包含字符串2的用字符串3替换,支持正则表达式
select regexp_replace('fuyun', 'u|y', '');
-- fn
replace(string1, string2, string3)
同样是替换,不支持正则表达式
overlay(string1 placing string2 from integer int1 [for integer2])
返回一个字符串,该字符串将位置 INT1 中的 INT2(默认情况下为 STRING2 的长度)替换为位置 INT1 中的 STRING2
select overlay('fuyun' placing 'nuyuf' from 3);
-- funuyuf
select overlay('fuyun' placing 'nuyuf' from 3 for 2);
-- funuyufn
未完待续…