企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
●▲● **`double round(DOUBLE a)`** -- 返回数字 a 四舍五入后的值 ```sql select round(1.5) from test; -- 结果为 2 select round(1.1) from test; -- 结果为 1 ``` ●▲● **`double round(DOUBLE a, INT d)`** -- 返回数字 a 四舍五入到小数点后 d 位的值 ```sql select round(1.15, 1) from test; -- 结果为 1.2 select round(1.12, 1) from test; -- 结果为 1.1 select round(1.12, 3) from test; -- 结果为 1.12 select round(1.12, 0) from test; -- 结果为 1.0 select round(1.12, -1) from test; -- 结果为 0.0 ``` ●▲● **`bigint floor(DOUBLE a)`** -- 对数字 a 向下取整 ```sql select floor(1.1) from test; -- 结果为 1 select floor(1.6) from test; -- 结果为 1 select floor(-1.1) from test; -- 结果为 -2 select floor(-1.6) from test; -- 结果为 -2 ``` ●▲● **`bigint ceil(DOUBLE a)`** **`bigint ceiling(DOUBLE a)`** -- 对数字 a 向上取整 ```sql select ceil(1.1) from test; -- 结果为 2 select ceil(1.6) from test; -- 结果为 2 select floor(-1.1) from test; -- 结果为 -1 select floor(-1.6) from test; -- 结果为 -1 ``` ●▲● **`double pow(DOUBLE a, DOUBLE p)`** **`double power(DOUBLE a, DOUBLE p)`** -- 返回 a 的 p 次方 ```sql select pow(-1, 2) from test; -- 结果为 1.0 select pow(0, 1.21) from test; -- 结果为 0.0 select pow(1.1, 2) from test; -- 结果为 1.2100000000000002 ``` ●▲● **`double sqrt(DOUBLE a)`** **`double sqrt(DECIMAL a)`** -- 返回 a 的 平方根 ```sql select sqrt(4) from test; -- 结果为 2.0 select sqrt(1.21) from test; -- 结果为 1.1 select sqrt(-1) from test; -- 结果为 NULL ``` ●▲● **`double abs(DOUBLE a)`** -- 返回 a 的绝对值 ```sql select abs('-1.024') from test; -- 结果为 1.024 select abs('1.024') from test; -- 结果为 1.024 select abs(1.024) from test; -- 结果为 1.024 ``` ●▲●`double bround(DOUBLE a)` -- 返回数字 a 高斯舍入后的值 -- 高斯舍入也称银行家舍入,简单的说就是四舍六入五考虑,五后非空就进一,五后为空看奇偶,五前为偶应舍去,五前为奇要进一 <hr/> ```sql -- 四舍 select bround(1.4) from test; -- 结果为 1.0 -- 六入 select bround(1.6) from test; -- 结果为 2.0 -- 五后非空就进一 select bround(1.51) from test; -- 结果为 2.0 -- 五前为偶应舍去 select bround(2.5) from test; -- 结果为 2.0 -- 五前为奇要进一 select bround(3.5) from test; -- 结果为 4.0 ``` ●▲●`double bround(DOUBLE a, INT d)` -- 返回数字 a 高斯舍入到小数点后 d 位的值 <hr/> ```sql -- 四舍 select bround(1.14, 1) from test; -- 结果为 1.1 -- 六入 select bround(1.16, 1) from test; -- 结果为 1.2 -- 五后非空就进一 select bround(1.151, 1) from test; -- 结果为 1.2 -- 五前为偶应舍去 select bround(1.25, 1) from test; -- 结果为 1.2 -- 五前为奇要进一 select bround(1.35, 1) from test; -- 结果为 1.4 ``` ●▲● `double rand()` `double rand(INT seed)` -- 如果 seed 不指定,则返回 0 到 1 之间的随机数 <hr/> ```sql # 如果 seed 不指定,则返回 0 到 1 之间的随机数 select rand() from test; -- 结果为 0.9811062452094043 # 如果 seed 指定了,随机数是确定的,如: select rand(2) from test; -- 结果为 0.7311469360199058 select rand(2020) from test; -- 结果为 0.6188119599189963 select rand(20201231) from test; -- 结果为 0.9412005456293369 # 一般使用 Unix 时间戳作为 seed ``` ●▲● `double exp(DOUBLE a)` `double exp(DECIMAL a)` -- 返回 e 的 a 次方 <hr/> ```sql select exp(1) from test; -- 结果为 2.718281828459045 select exp(1.5) from test; -- 结果为 4.4816890703380645 select exp(2) from test; -- 结果为 7.38905609893065 select exp(0) from test; -- 结果为 1.0 select exp(-1) from test; -- 结果为 0.36787944117144233 ``` ●▲● `double ln(DOUBLE a)` `double ln(DECIMAL a)` -- 返回以 e 为底,a 的对数 <hr/> ```sql select ln(0) from test; -- 结果为 NULL select ln(1) from test; -- 结果为 0.0 select ln(2) from test; -- 结果为 0.6931471805599453 select ln(2.718281828459045) from test; -- 结果为 1.0 ``` ●▲● `double log10(DOUBLE a)` `double log10(DECIMAL a)` -- 返回以 10 为底,a 的对数 <hr/> ```sql select log10(1) from test; -- 结果为 0.0 select log10(10) from test; -- 结果为 1.0 select log10(0.1) from test; -- 结果为 -1.0 ``` ●▲● `double log2(DOUBLE a)` `double log2(DECIMAL a)` -- 返回以 2 为底,a 的对数 <hr/> ```sql select log10(1) from test; -- 结果为 0.0 select log10(10) from test; -- 结果为 1.0 select log10(0.1) from test; -- 结果为 -1.0 ``` ●▲● `double log(DOUBLE base, DOUBLE a)` `double log(DECIMAL base, DECIMAL a)` -- 返回以 base 为底,a 的对数 <hr/> ```sql select log(1.1, 1.21) from test; -- 结果为 1.9999999999999982 select log(2, 4) from test; -- 结果为 2.0 select log(3.1, 5) from test; -- 结果为 1.4225162708181491 ``` ●▲●`string bin(BIGINT a)` -- 返回 a 的 二进制表达式 <hr/> ```sql select bin(-1024) from test; -- 结果为 1111111111111111111111111111111111111111111111111111110000000000 select bin(-1) from test; -- 结果为 1111111111111111111111111111111111111111111111111111111111111111 select bin(1) from test; -- 结果为 1 select bin(1024) from test; -- 结果为 10000000000 ``` ●▲● `string hex(BIGINT a)` `string hex(STRING a)` `string hex(BINARY a)` -- 如果参数 a 是整数,则返回十六进制表达式 <hr/> ```sql select hex(16) from test; -- 结果为 10 select bin(-1024) from test; -- 结果为 select bin(-1024) from test; -- 结果为 select bin(-1024) from test; -- 结果为 ``` 如果参数 a 是字符串,则逐一将字符串中的每个字符对应的 ASCII 码以十六 进制表示并返回,如: ```sql select hex(16) from test; -- 结果为 10 select hex(11) from test; -- 结果为 B select hex(-1) from test; -- 结果为 FFFFFFFFFFFFFFFF ``` ●▲●`string unhex(STRING a)` -- hex 的逆函数,以十六进制解释参数 a ,并进行 ASCII 转换,返回对应的字符 <hr/> ```sql select unhex('41') from test; -- 结果为 A select unhex('42') from test; -- 结果为 B select unhex('4242') from test; -- 结果为 BB ``` ●▲● `string conv(BIGINT num, INT from_base, INT to_base)` `string conv(STRING num, INT from_base, INT to_base)` -- 将数字 num 或者字符串 num 从 from_base 进制转换到 to_base 进制 <hr/> ```sql select conv('1024', 10, 2) from test; -- 结果为 10000000000 select conv(1024, 10, 2) from test; -- 结果为 10000000000 select conv(10000000000, 2, 10) from test; -- 结果为 1024 select conv('A', 16, 10) from test; -- 结果为 1 ``` ●▲● `int pmod(INT a, INT b)` `double pmod(DOUBLE a, DOUBLE b)` -- 返回 a 模 b 的值,pmod(a, b) 同 a % b <hr/> ```sql select pmod(10, 3) from test; -- 结果为 1 select 10 % 3 from test; -- 结果为 1 select pmod(10.1, 2.5) from test; -- 结果为 0.09999999999999964 select 10.1 % 2.5 from test; -- 结果为 0.09999999999999964 select pmod(10, 2.5) from test; -- 结果为 0.0 ``` ●▲● `double sin(DOUBLE a)` `double sin(DECIMAL a)` -- 返回 a 的正弦值(a 以弧度为单位,1 弧度(rad)=57.29578 度(°)) <hr/> ```sql select sin(1) from test; -- 结果为 0.8414709848078965 select sin(1 / 57.29578 * 90) from test; -- 结果为 0.9999999999999999 ``` ●▲● `double asin(DOUBLE a)` `double asin(DECIMAL a)` -- 返回 a 的反正弦值( -1<=a<=1) <hr/> ```sql select asin(0.8414709848078965) from test; -- 结果为 1.0 select asin(1) * 57.29578 from test; -- 结果为 90.0000007648485 select asin(10) from test; -- 结果为 NaN ``` ●▲● `double cos(DOUBLE a)` `double cos(DECIMAL a)` -- 返回 a 的余弦值 <hr/> ```sql select cos(1) from test; -- 结果为 0.5403023058681398 select cos(1 / 57.29578 * 120) from test; -- 结果为 -0.4999999845857585 ``` ●▲● `double acos(DOUBLE a)` `double acos(DECIMAL a)` -- 返回 a 的反余弦值 <hr/> ```sql select acos(0.5403023058681398) from test; -- 结果为 1.0 select acos(0.5) * 57.29578 from test; -- 结果为 60.00000050989901 ``` ●▲● `double tan(DOUBLE a)` `double tan(DECIMAL a)` -- 返回 a 的正切值 <hr/> ```sql select tan(1) from test; -- 结果为 1.5574077246549023 select tan(1 / 57.29578 * 45) from test; -- 结果为 0.9999999866508755 ``` ●▲● `double atan(DOUBLE a)` `double atan(DECIMAL a)` -- 返回 a 的反正切值 <hr/> ```sql select atan(1.5574077246549023) from test; -- 结果为 1.0 select atan(1) * 57.29578 from test; -- 结果为 45.00000038242425 ``` ●▲● `double degrees(DOUBLE a)` `double degrees(DECIMAL a)` -- 弧度(rad)转为度(°):1 弧度(rad)=57.29577951308232 度(°) <hr/> ```sql select degrees(1) from test; -- 结果为 57.29577951308232 ``` ●▲● `double radians(DOUBLE a)` `double radians(DOUBLE a)` -- 度(°)转为弧度(rad) <hr/> ```sql select radians(57.29577951308232) from test; -- 结果为 1.0 select radians(90) from test; -- 结果为 1.5707963267948966 ``` ●▲● `int positive(INT a)` `double positive(DOUBLE a)` -- 返回 a <hr/> ```sql select positive(1) from test; -- 结果为 1 select positive(-1) from test; -- 结果为 -1 select positive(1.024) from test; -- 结果为 1.024 ``` ●▲● `int negative(INT a)` `double negative(DOUBLE a)` -- 返回 -a <hr/> ```sql select negative(1) from test; -- 结果为 -1 select negative(-1) from test; -- 结果为 1 select negative(1.024) from test; -- 结果为 -1.024 ``` ●▲● `double sign(DOUBLE a)` `int sign(DECIMAL a)` -- 如果 a 是正数,返回 1.0;如果 a 是负数,返回 -1.0;如果 a 是 0,返回 0.0 <hr/> ```sql select sign(2) from test; -- 结果为 1.0 select sign(-2) from test; -- 结果为 -1.0 select sign(0) from test; -- 结果为 0.0 select sign(0) from test; -- 结果为 0.0 ``` ●▲●`double e()` - 返回自然常数 e 的值 <hr/> ```sql select e() from test; -- 结果为 2.718281828459045 ``` ●▲●`double pi()` -- 返回圆周率 π 的值 <hr/> ```sql select pi() from test; -- 结果为 3.141592653589793 ``` ●▲●`bigint factorial(INT a)` -- 返回 a 的阶乘(n!=1×2×3×...×(n-1)×n) <hr/> ```sql select factorial(3) from test; -- 结果为 6 select factorial(4) from test; -- 结果为 24 ``` ●▲●`double cbrt(DOUBLE a)` -- 返回 a 的立方根 <hr/> ```sql select cbrt(8) from test; -- 结果为 2.0 select cbrt(1.331) from test; -- 结果为 1.1 ``` ●▲●`T greatest(T v1, T v2, ...)` -- 返回最大值(如果列表中有一个值为 NULL,则返回 NULL) <hr/> ```sql select greatest(2, 3) from test; -- 结果为 3 select greatest('11', '12', '9') from test; -- 结果为 9 select greatest(NULL, 1, 2) from test; -- 结果为 NULL ``` ●▲●`T least(T v1, T v2, ...)` -- 返回最小值(如果列表中有一个值为 NULL,则返回 NULL) <hr/> ```sql select least(2, 3) from test; -- 结果为 2 select least('11', '12', '9') from test; -- 结果为 11 select least(NULL, 1, 2) from test; -- 结果为 NULL ``` ●▲● ```sql int width_bucket(NUMERIC expr, NUMERIC min_value, NUMERIC max_value, INT num_buckets) ``` -- 返回一个介于 0 和 num_buckets + 1 之间的整数(基于通过将[min_value,max_value]划分为大小相等的区域来生成存储桶); 如果 expr 小于 min_value 则返回 1,如果 expr 大于 max_value 则返回num_buckets + 1 <hr/> ```sql select width_bucket(2, 1, 10, 5) from test; -- 结果为 1 select width_bucket(1, 2, 11, 5) from test; -- 结果为 1 select width_bucket(11, 1, 10, 5) from test; -- 结果为 6 ```