MaxCompute SQL提供了常见的数学函数供您在开发过程中使用,您可以根据实际需要选择合适的数学函数,进行数据计算、数据转换相关操作。本文为您提供MaxCompute SQL支持的数学函数的命令格式、参数说明及示例,指导您使用数学函数完成开发。
函数 | 功能 |
---|---|
ABS | 计算绝对值。 |
ACOS | 计算反余弦值。 |
ASIN | 计算反正弦值。 |
ATAN | 计算反正切值。 |
ATAN2 | 计算 expr1/expr2 的反正切值。 |
CEIL | 计算向上取整值。 |
CONV | 计算进制转换值。 |
COS | 计算余弦值。 |
COSH | 计算双曲余弦值。 |
COT | 计算余切值。 |
EXP | 计算指数值。 |
FLOOR | 计算向下取整值。 |
ISNAN | 判断表达式的值是否为NaN。 |
LN | 计算自然对数。 |
LOG | 计算log对数值。 |
NEGATIVE | 返回表达式的负值。 |
POSITIVE | 返回表达式的值。 |
POW | 计算幂值。 |
RAND | 返回随机数。 |
ROUND | 返回四舍五入到指定小数点位置的值。 |
SIN | 计算正弦值。 |
SINH | 计算双曲正弦值。 |
SQRT | 计算平方根。 |
TAN | 计算正切值。 |
TANH | 计算双曲正切值。 |
TRUNC | 返回截取到指定小数点位置的值。 |
BIN | 计算二进制代码值。 |
CBRT | 计算立方根值。 |
CORR | 计算皮尔逊系数。 |
DEGREES | 将弧度转换为角度。 |
E | 返回e的值。 |
FACTORIAL | 计算阶乘值。 |
FORMAT_NUMBER | 将数字转化为指定格式的字符串。 |
HEX | 返回整数或字符串的十六进制格式。 |
LOG2 | 计算以2为底的对数。 |
LOG10 | 计算以10为底的对数。 |
PI | 返回π的值。 |
RADIANS | 将角度转换为弧度。 |
SIGN | 返回输入参数的符号。 |
SHIFTLEFT | 计算按位左移值。 |
SHIFTRIGHT | 计算按位右移值。 |
SHIFTRIGHTUNSIGNED | 计算无符号按位右移值。 |
UNHEX | 返回十六进制字符串所代表的字符串。 |
WIDTH_BUCKET | 返回指定字段值落入的分组编号。 |
注意事项
示例数据
create table if not exists mf_math_fun_t(
int_data int,
bigint_data bigint,
double_data double,
decimal_data decimal,
float_data float,
string_data string
insert into mf_math_fun_t values
(null, -10, 0.525, 0.525BD, cast(0.525 as float), '10'),
(-20, null, -0.1, -0.1BD, cast(-0.1 as float), '-10'),
(0, -1, null, 20.45BD, cast(-1 as float), '30'),
(-40, 4, 0.89, null, cast(0.89 as float), '-30'),
(5, -50, -1, -1BD, null, '50'),
(-60, 6, 1.5, 1.5BD, cast(1.5 as float), '-50'),
(-1, -70, -7.5, -7.5BD, cast(-7.5 as float),null ),
(-80, 1, -10.2, -10.2BD, cast(-10.2 as float), '-1' ),
(9, -90, 2.58, 2.58BD, cast(2.58 as float), '0'),
(-100, 10, -5.8, -5.8BD, cast(-5.8 as float), '-90');
查询表mf_math_fun_t中的数据,命令示例如下:
select * from mf_math_fun_t;
--返回结果。
+------------+-------------+-------------+--------------+------------+-------------+
| int_data | bigint_data | double_data | decimal_data | float_data | string_data |
+------------+-------------+-------------+--------------+------------+-------------+
| NULL | -10 | 0.525 | 0.525 | 0.525 | 10 |
| -20 | NULL | -0.1 | -0.1 | -0.1 | -10 |
| 0 | -1 | NULL | 20.45 | -1.0 | 30 |
| -40 | 4 | 0.89 | NULL | 0.89 | -30 |
| 5 | -50 | -1.0 | -1 | NULL | 50 |
| -60 | 6 | 1.5 | 1.5 | 1.5 | -50 |
| -1 | -70 | -7.5 | -7.5 | -7.5 | NULL |
| -80 | 1 | -10.2 | -10.2 | -10.2 | -1 |
| 9 | -90 | 2.58 | 2.58 | 2.58 | 0 |
| -100 | 10 | -5.8 | -5.8 | -5.8 | -90 |
| NULL | -10 | 0.525 | 0.525 | 0.525 | 10 |
| -20 | NULL | -0.1 | -0.1 | -0.1 | -10 |
| 0 | -1 | NULL | 20.45 | -1.0 | 30 |
| -40 | 4 | 0.89 | NULL | 0.89 | -30 |
| 5 | -50 | -1.0 | -1 | NULL | 50 |
| -60 | 6 | 1.5 | 1.5 | 1.5 | -50 |
| -1 | -70 | -7.5 | -7.5 | -7.5 | NULL |
| -80 | 1 | -10.2 | -10.2 | -10.2 | -1 |
| 9 | -90 | 2.58 | 2.58 | 2.58 | 0 |
| -100 | 10 | -5.8 | -5.8 | -5.8 | -90 |
+------------+-------------+-------------+--------------+------------+-------------+
ABS
-
命令格式
bigint|double|decimal abs(<number>)
-
命令说明
计算 number 的绝对值。
-
参数说明
number :必填。DOUBLE、BIGINT或DECIMAL类型。输入为STRING时,会隐式转换为DOUBLE类型后参与运算。说明 当输入BIGINT类型的值超过BIGINT的最大表示范围时,会返回DOUBLE类型,但可能会损失精度。
-
返回值说明
返回值类型取决于输入参数的类型。返回规则如下:
- number 为DOUBLE、BIGINT或DECIMAL类型时会返回相应的类型。
- number 为STRING类型时,返回DOUBLE类型。
- number 为NULL,则返回NULL。
-
示例
-
静态数据示例
--返回NULL。 select abs(null); --返回1。 select abs(-1); --返回1.2。 select abs(-1.2); --返回2.0。 select abs("-2"); --返回1.2232083745629837E32。 select abs(122320837456298376592387456923748); --取tbl1表内id字段的绝对值。下面是一个完整的ABS函数在SQL中使用的示例,其他内建函数(除窗口函数和聚合函数外)的使用方式与其类似。 select abs(id) from tbl1;
-
表数据示例
基于 示例数据 ,计算绝对值,命令示例如下。
返回结果如下。select abs(bigint_data) as bigint_new, abs(double_data) as double_new, abs(decimal_data) as decimal_new, abs(string_data) as string_new from mf_math_fun_t;
+------------+------------+-------------+------------+ | bigint_new | double_new | decimal_new | string_new | +------------+------------+-------------+------------+ | 10 | 0.525 | 0.525 | 10.0 | | NULL | 0.1 | 0.1 | 10.0 | | 1 | NULL | 20.45 | 30.0 | | 4 | 0.89 | NULL | 30.0 | | 50 | 1.0 | 1 | 50.0 | | 6 | 1.5 | 1.5 | 50.0 | | 70 | 7.5 | 7.5 | NULL | | 1 | 10.2 | 10.2 | 1.0 | | 90 | 2.58 | 2.58 | 0.0 | | 10 | 5.8 | 5.8 | 90.0 | +------------+------------+-------------+------------+
-
静态数据示例
ACOS
-
命令格式
double|decimal acos(<number>)
-
命令说明
计算 number 的反余弦函数。
-
参数说明
number :必填。取值范围为[-1,1]。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
-
返回值说明
返回值类型取决于输入参数的类型。值域在0~π之间。返回规则如下:
- number 为DOUBLE、DECIMAL类型时会返回相应的类型。
- number 为STRING、BIGINT类型时,返回DOUBLE类型。
- number 值不在[-1,1]范围内时,返回NULL。
- number 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回0.5155940062460905。 select acos("0.87"); --返回1.5707963267948966。 select acos(0); --返回NULL。 select acos(null);
-
表数据示例
基于 示例数据 ,计算反余弦值,命令示例如下。
返回结果如下。select acos(bigint_data) as bigint_new, acos(double_data) as double_new, acos(decimal_data) as decimal_new, acos(string_data) as string_new from mf_math_fun_t;
+-------------------+--------------------+--------------------+---------------------+ | bigint_new | double_new | decimal_new | string_new | +-------------------+--------------------+--------------------+---------------------+ | NULL | 1.0180812136981134 | 1.0180812136981134 | NULL | | NULL | 1.6709637479564565 | 1.6709637479564565 | NULL | | 3.141592653589793 | NULL | NULL | NULL | | NULL | 0.4734511572720662 | NULL | NULL | | NULL | 3.141592653589793 | 3.141592653589793 | NULL | | NULL | NULL | NULL | NULL | | NULL | NULL | NULL | NULL | | 0.0 | NULL | NULL | 3.141592653589793 | | NULL | NULL | NULL | 1.5707963267948966 | | NULL | NULL | NULL | NULL | +-------------------+--------------------+--------------------+---------------------+
-
静态数据示例
ASIN
-
命令格式
double|decimal asin(<number>)
-
命令说明
计算 number 的反正弦函数。
-
参数说明
number :必填。取值范围为[-1,1]。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
-
返回值说明
返回值类型取决于输入参数的类型。值域在
-π/2~π/2
之间。返回规则如下:- number 为DOUBLE、DECIMAL类型时会返回相应的类型。
- number 为STRING、BIGINT类型时,返回DOUBLE类型。
- number 值不在[-1,1]范围内时,返回NULL。
- number 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回1.5707963267948966。 select asin(1); --返回-1.5707963267948966。 select asin(-1); --返回NULL。 select asin(null);
-
表数据示例
基于 示例数据 ,计算反正弦值,命令示例如下。
返回结果如下。select asin(bigint_data) as bigint_new, asin(double_data) as double_new, asin(decimal_data) as decimal_new, asin(string_data) as string_new from mf_math_fun_t;
+--------------------+---------------------+---------------------+---------------------+ | bigint_new | double_new | decimal_new | string_new | +--------------------+---------------------+---------------------+---------------------+ | NULL | 0.5527151130967832 | 0.5527151130967832 | NULL | | NULL | -0.1001674211615598 | -0.1001674211615598 | NULL | | -1.5707963267948966| NULL | NULL | NULL | | NULL | 1.0973451695228305 | NULL | NULL | | NULL | -1.5707963267948966 | -1.5707963267948966 | NULL | | NULL | NULL | NULL | NULL | | NULL | NULL | NULL | NULL | | 1.5707963267948966 | NULL | NULL | -1.5707963267948966 | | NULL | NULL | NULL | 0.0 | | NULL | NULL | NULL | NULL | +--------------------+---------------------+---------------------+---------------------+
-
静态数据示例
ATAN
-
命令格式
double atan(<number>)
-
命令说明
计算 number 的反正切函数。
-
参数说明
number :必填。DOUBLE类型。输入为STRING、BIGINT、DECIMAL类型时,会隐式转换为DOUBLE类型后参与运算。
-
返回值说明
返回DOUBLE类型。值域在
-π/2~π/2
之间。 number 值为NULL时,返回NULL。 -
示例
-
静态数据示例
--返回0.7853981633974483。 select atan(1); --返回-0.7853981633974483。 select atan(-1); --返回NULL。 select atan(null);
-
表数据示例
基于 示例数据 ,计算反正切值,命令示例如下。
返回结果如下。select atan(bigint_data) as bigint_new, atan(double_data) as double_new, atan(decimal_data) as decimal_new, atan(string_data) as string_new from mf_math_fun_t;
+---------------------+----------------------+----------------------+---------------------+ | bigint_new | double_new | decimal_new | string_new | +---------------------+----------------------+----------------------+---------------------+ | -1.4711276743037347 | 0.483447001567199 | 0.483447001567199 | 1.4711276743037347 | | NULL | -0.09966865249116204 | -0.09966865249116204 | -1.4711276743037347 | | -0.7853981633974483 | NULL | 1.521935491607842 | 1.5374753309166493 | | 1.3258176636680326 | 0.7272626879966904 | NULL | -1.5374753309166493 | | -1.550798992821746 | -0.7853981633974483 | -0.7853981633974483 | 1.550798992821746 | | 1.4056476493802699 | 0.982793723247329 | 0.982793723247329 | -1.550798992821746 | | -1.5565115842075 | -1.4382447944982226 | -1.4382447944982226 | NULL | | 0.7853981633974483 | -1.473069419436178 | -1.473069419436178 | -0.7853981633974483 | | -1.5596856728972892 | 1.2010277920014796 | 1.2010277920014796 | 0.0 | | 1.4711276743037347 | -1.4000611153196139 | -1.4000611153196139 | -1.5596856728972892 | +---------------------+----------------------+----------------------+---------------------+
-
静态数据示例
ATAN2
-
命令格式
double atan2(<expr1>, <expr2>)
-
命令说明
计算 expr1/expr2 的反正切函数。
-
参数说明
- expr1 :必填。DOUBLE类型。输入为STRING、BIGINT、DECIMAL类型时,会隐式转换为DOUBLE类型后参与运算。
- expr2 :必填。DOUBLE类型。输入为STRING、BIGINT、DECIMAL类型时,会隐式转换为DOUBLE类型后参与运算。
-
返回值说明
返回DOUBLE类型。值域在
-π/2~π/2
之间。 expr1 或 expr2 值为NULL时,返回NULL。 -
示例
--返回0.0。 select atan2(0, 0);
CEIL
-
命令格式
bigint ceil(<value>)
-
命令说明
向上取整,返回不小于输入值 value 的最小整数。
-
参数说明
value :必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
-
返回值说明
返回BIGINT类型。 number 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回2。 select ceil(1.1); --返回-1。 select ceil(-1.1); --返回NULL。 select ceil(null);
-
表数据示例
基于 示例数据 ,向上取整,命令示例如下。
返回结果如下。select ceil(bigint_data) as bigint_new, ceil(double_data) as double_new, ceil(decimal_data) as decimal_new, ceil(string_data) as string_new from mf_math_fun_t;
+------------+------------+-------------+------------+ | bigint_new | double_new | decimal_new | string_new | +------------+------------+-------------+------------+ | -10 | 1 | 1 | 10 | | NULL | 0 | 0 | -10 | | -1 | NULL | 21 | 30 | | 4 | 1 | NULL | -30 | | -50 | -1 | -1 | 50 | | 6 | 2 | 2 | -50 | | -70 | -7 | -7 | NULL | | 1 | -10 | -10 | -1 | | -90 | 3 | 3 | 0 | | 10 | -5 | -5 | -90 | +------------+------------+-------------+------------+
-
静态数据示例
CONV
-
命令格式
string conv(<input>, bigint <from_base>, bigint <to_base>)
-
命令说明
该函数为进制转换函数。
-
参数说明
- input :必填。以STRING表示的要转换的整数值,支持BIGINT和DOUBLE的隐式转换。
- from_base 、 to_base :必填。以十进制表示的进制值,支持的值为2、8、10和16。支持STRING及DOUBLE类型的隐式转换。
-
返回值说明
返回STRING类型。返回规则如下:
- input 、 from_base 或 to_base 值为NULL时,返回NULL。
- 转换过程以64位精度工作,溢出时返回NULL。
- input 如果是负值,即以短划线(-)开头,返回NULL。如果输入的是小数,会转为整数值后进行进制转换,小数部分会被舍弃。
-
示例
-
静态数据示例
--返回12。 select conv('1100', 2, 10); --返回C。 select conv('1100', 2, 16); --返回171。 select conv('ab', 16, 10); --返回AB。 select conv('ab', 16, 16); --返回NULL。 select conv('1100', null, 10);
-
表数据示例
基于 示例数据 ,转换为二进制形式,命令示例如下。
返回结果如下。select conv(bigint_data,10,2) as bigint_new, conv(double_data,10,2) as double_new, conv(decimal_data,10,2) as decimal_new, conv(string_data,10,2) as string_new from mf_math_fun_t;
+------------+------------+-------------+------------+ | bigint_new | double_new | decimal_new | string_new | +------------+------------+-------------+------------+ | NULL | 0 | 0 | 1010 | | NULL | NULL | NULL | NULL | | NULL | NULL | 10100 | 11110 | | 100 | 0 | NULL | NULL | | NULL | NULL | NULL | 110010 | | 110 | 1 | 1 | NULL | | NULL | NULL | NULL | NULL | | 1 | NULL | NULL | NULL | | NULL | 10 | 10 | 0 | | 1010 | NULL | NULL | NULL | +------------+------------+-------------+------------+
-
静态数据示例
COS
-
命令格式
double|decimal cos(<number>)
-
命令说明
计算 number 的余弦函数,输入为弧度值。
-
参数说明
number :必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
-
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
- number 为DOUBLE、DECIMAL类型时会返回相应的类型。
- number 为STRING、BIGINT类型时,返回DOUBLE类型。
- number 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回2.6794896585028633e-8。 select cos(3.1415926/2); --返回-0.9999999999999986。 select cos(3.1415926); --返回NULL。 select cos(null);
-
表数据示例
基于 示例数据 ,计算余弦值,命令示例如下。
返回结果如下。select cos(bigint_data) as bigint_new, cos(double_data) as double_new, cos(decimal_data) as decimal_new, cos(string_data) as string_new from mf_math_fun_t;
+---------------------+--------------------+----------------------+---------------------+ | bigint_new | double_new | decimal_new | string_new | +---------------------+--------------------+----------------------+---------------------+ | -0.8390715290764524 | 0.8653239416229412 | 0.8653239416229412 | -0.8390715290764524 | | NULL | 0.9950041652780258 | 0.9950041652780258 | -0.8390715290764524 | | 0.5403023058681398 | NULL | -0.02964340851507803 | 0.15425144988758405 | | -0.6536436208636119 | 0.6294120265736969 | NULL | 0.15425144988758405 | | 0.9649660284921133 | 0.5403023058681398 | 0.5403023058681398 | 0.9649660284921133 | | 0.960170286650366 | 0.0707372016677029 | 0.0707372016677029 | 0.9649660284921133 | | 0.6333192030862999 | 0.3466353178350258 | 0.3466353178350258 | NULL | | 0.5403023058681398 | -0.7142656520272003| -0.7142656520272003 | 0.5403023058681398 | | -0.4480736161291701 | -0.8464080412157756| -0.8464080412157756 | 1.0 | | -0.8390715290764524 | 0.8855195169413189 | 0.8855195169413189 | -0.4480736161291701 | +---------------------+--------------------+----------------------+---------------------+
-
静态数据示例
COSH
-
命令格式
double|decimal cosh(<number>)
-
命令说明
计算 number 的双曲余弦函数。
-
参数说明
number :必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
-
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
- number 为DOUBLE、DECIMAL类型时会返回相应的类型。
- number 为STRING、BIGINT类型时,返回DOUBLE类型。
- number 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回2.5091784169949913。 select cosh(3.1415926/2); --返回NULL。 select cosh(null);
-
表数据示例
基于 示例数据 ,计算双曲余弦值,命令示例如下。
返回结果如下。select cosh(bigint_data) as bigint_new, cosh(double_data) as double_new, cosh(decimal_data) as decimal_new, cosh(string_data) as string_new from mf_math_fun_t;
+-----------------------+--------------------+--------------------+----------------------+ | bigint_new | double_new | decimal_new | string_new | +-----------------------+--------------------+--------------------+----------------------+ | 11013.232920103324 | 1.1410071063729532 | 1.1410071063729532 | 11013.232920103324 | | NULL | 1.0050041680558035 | 1.0050041680558035 | 11013.232920103324 | | 1.5430806348152437 | NULL | 380445243.96844625 | 5343237290762.231 | | 27.308232836016487 | 1.42289270202111 | NULL | 5343237290762.231 | | 2.592352764293536e21 | 1.5430806348152437 | 1.5430806348152437 | 2.592352764293536e21 | | 201.7156361224559 | 2.352409615243247 | 2.352409615243247 | 2.592352764293536e21 | | 1.2577193354595834e30 | 904.0214837702166 | 904.0214837702166 | NULL | | 1.5430806348152437 | 13451.593055733929 | 13451.593055733929 | 1.5430806348152437 | | 6.102016471589204e38 | 6.636456081840602 | 6.636456081840602 | 1.0 | | 11013.232920103324 | 165.151293732197 | 165.151293732197 | 6.102016471589204e38 | +-----------------------+--------------------+--------------------+----------------------+
-
静态数据示例
COT
-
命令格式
double|decimal cot(<number>)
-
命令说明
计算 number 的余切函数,输入为弧度值。
-
参数说明
number :必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
-
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
- number 为DOUBLE、DECIMAL类型时会返回相应的类型。
- number 为STRING、BIGINT类型时,返回DOUBLE类型。
- number 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回2.6794896585028643E-8。 select cot(3.1415926/2); --返回NULL。 select cot(null);
-
表数据示例
基于 示例数据 ,计算余切值,命令示例如下。
返回结果如下。select cot(bigint_data) as bigint_new, cot(double_data) as double_new, cot(decimal_data) as decimal_new, cot(string_data) as string_new from mf_math_fun_t;
+-----------------------+--------------------+--------------------+----------------------+ | bigint_new | double_new | decimal_new | string_new | +-----------------------+--------------------+--------------------+----------------------+ | -1.54235104535692 | 1.7264594764178474 | 1.7264594764178474 | 1.54235104535692 | | NULL | -9.966644423259238 | -9.966644423259238 | -1.54235104535692 | | -0.6420926159343308 | NULL | -0.02965644140592836| -0.15611995216165922| | 0.8636911544506167 | 0.8099792954471944 | NULL | 0.15611995216165922 | | 3.6778144508505695 | -0.6420926159343308| -0.6420926159343308| -3.6778144508505695 | | -3.436353004180128 | 0.07091484430265245| 0.07091484430265245| 3.6778144508505695 | | -0.8183574478651038 | -0.36954725630901636| -0.36954725630901636| NULL | | 0.6420926159343308 | -1.0205622016180353 | -1.0205622016180353 | -0.6420926159343308| | 0.5012027833801532 | -1.5893944776331337 | -1.5893944776331337 | 1.0 | | 1.54235104535692 | 1.9059736612916494 | 1.9059736612916494 | 0.5012027833801532 | +-----------------------+---------------------+---------------------+--------------------+
-
静态数据示例
EXP
-
命令格式
double|decimal exp(<number>)
-
命令说明
计算 number 的指数函数。
-
参数说明
number :必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
-
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
- number 为DOUBLE、DECIMAL类型时会返回相应的类型。
- number 为STRING、BIGINT类型时,返回DOUBLE类型。
- number 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回4.810477252069109。 select exp(3.1415926/2); --返回NULL。 select exp(null);
-
表数据示例
基于 示例数据 ,计算指数值,命令示例如下。
返回结果如下。select exp(bigint_data) as bigint_new, exp(double_data) as double_new, exp(decimal_data) as decimal_new, exp(string_data) as string_new from mf_math_fun_t;
+-------------------------+-------------------------+-------------------------+-------------------------+ | bigint_new | double_new | decimal_new | string_new | +-------------------------+-------------------------+-------------------------+-------------------------+ | 0.000045399929762484854 | 1.6904588483790914 | 1.6904588483790914 | 22026.465794806718 | | NULL | 0.9048374180359595 | 0.9048374180359595 | 0.000045399929762484854 | | 0.36787944117144233 | NULL | 760890487.9368925 | 10686474581524.463 | | 54.598150033144236 | 2.4351296512898744 | NULL | 9.357622968840175e-14 | | 1.9287498479639178e-22 | 0.36787944117144233 | 0.36787944117144233 | 5.184705528587072e21 | | 403.4287934927351 | 4.4816890703380645 | 4.4816890703380645 | 1.9287498479639178e-22 | | 3.975449735908647e-31 | 0.0005530843701478336 | 0.0005530843701478336 | NULL | | 2.718281828459045 | 0.000037170318684126734 | 0.000037170318684126734 | 0.36787944117144233 | | 8.194012623990515e-40 | 13.197138159658358 | 13.197138159658358 | 1.0 | | 22026.465794806718 | 0.0030275547453758153 | 0.0030275547453758153 | 8.194012623990515e-40 | +-------------------------+-------------------------+-------------------------+-------------------------+
-
静态数据示例
FLOOR
-
命令格式
bigint floor(<number>)
-
命令说明
向下取整,返回不大于 number 的最大整数值。
-
参数说明
number :必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
-
返回值说明
返回BIGINT类型。 number 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回1。 select floor(1.2); --返回0。 select floor(0.1); --返回-2。 select floor(-1.2); --返回-1。 select floor(-0.1); --返回0。 select floor(0.0); --返回0。 select floor(-0.0); --返回NULL。 select floor(null);
-
表数据示例
基于 示例数据 ,向下取整,命令示例如下。
返回结果如下。select floor(bigint_data) as bigint_new, floor(double_data) as double_new, floor(decimal_data) as decimal_new, floor(string_data) as string_new from mf_math_fun_t;
+------------+------------+-------------+------------+ | bigint_new | double_new | decimal_new | string_new | +------------+------------+-------------+------------+ | -10 | 0 | 0 | 10 | | NULL | -1 | -1 | -10 | | -1 | NULL | 20 | 30 | | 4 | 0 | NULL | -30 | | -50 | -1 | -1 | 50 | | 6 | 1 | 1 | -50 | | -70 | -8 | -8 | NULL | | 1 | -11 | -11 | -1 | | -90 | 2 | 2 | 0 | | 10 | -6 | -6 | -90 | +------------+------------+-------------+------------+
-
静态数据示例
ISNAN
-
命令格式
boolean isnan(<expr>)
-
命令说明
判断 expr 的值是否为 NaN 。
-
参数说明
expr :必填。DOUBLE类型。输入为STRING、BIGINT、DECIMAL类型时,会隐式转换为DOUBLE类型后参与运算。
-
返回值说明
- 如果 expr 的值为 NaN ,返回True,否则返回False。
- expr 的值为NULL时,返回False。
-
示例
--返回False。 SELECT isnan(100.1);
LN
-
命令格式
double|decimal ln(<number>)
-
命令说明
计算 number 的自然对数。
-
参数说明
number :必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
-
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
- number 为DOUBLE、DECIMAL类型时会返回相应的类型。
- number 为STRING、BIGINT类型时,返回DOUBLE类型。
- number 值为负数或0时,返回NULL。
- number 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回1.144729868791239。 select ln(3.1415926); --返回NULL。 select ln(null);
-
表数据示例
基于 示例数据 ,计算自然对数值,命令示例如下。
返回结果如下。select ln(bigint_data) as bigint_new, ln(double_data) as double_new, ln(decimal_data) as decimal_new, ln(string_data) as string_new from mf_math_fun_t;
+--------------------+----------------------+---------------------+---------------------+ | bigint_new | double_new | decimal_new | string_new | +--------------------+----------------------+---------------------+---------------------+ | NULL | -0.6443570163905132 | -0.6443570163905132 | 2.302585092994046 | | NULL | NULL | NULL | NULL | | NULL | NULL | 3.017982882488811 | 3.4011973816621555 | | 1.3862943611198906 | -0.11653381625595151 | NULL | NULL | | NULL | NULL | NULL | 3.912023005428146 | | 1.791759469228055 | 0.4054651081081644 | 0.4054651081081644 | NULL | | NULL | NULL | NULL | NULL | | 0.0 | NULL | NULL | NULL | | NULL | 0.9477893989335261 | 0.9477893989335261 | NULL | | 2.302585092994046 | NULL | NULL | NULL | +--------------------+----------------------+---------------------+---------------------+
-
静态数据示例
LOG
-
命令格式
double log(<base>, <x>)
-
命令说明
计算以 base 为底的 x 的对数。
-
参数说明
- base :必填。底数。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
- x :必填。待计算对数的值。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
-
返回值说明
返回DOUBLE类型。 返回规则如下:
- base 或 x 为NULL时,返回NULL。
- base 或 x 为负数或0时,返回NULL。
- 如果 base 为1(会引发一个除零行为),会返回NULL。
-
示例
-
静态数据示例
--返回4.0。 select log(2, 16); --返回NULL。 select log(2, null);
-
表数据示例
基于 示例数据 ,计算列以2为底的对数值,命令示例如下。
返回结果如下。select log(2,bigint_data) as bigint_new, log(2,double_data) as double_new, log(2,decimal_data) as decimal_new, log(2,string_data) as string_new from mf_math_fun_t;
+--------------------+----------------------+--------------------+--------------------+ | bigint_new | double_new | decimal_new | string_new | +--------------------+----------------------+--------------------+--------------------+ | NULL | -0.929610672108602 | -0.929610672108602 | 3.3219280948873626 | | NULL | NULL | NULL | NULL | | NULL | NULL | 4.354028938054387 | 4.906890595608519 | | 2.0 | -0.16812275880832692 | NULL | NULL | | NULL | NULL | NULL | 5.643856189774724 | | 2.584962500721156 | 0.5849625007211562 | 0.5849625007211562 | NULL | | NULL | NULL | NULL | NULL | | 0.0 | NULL | NULL | NULL | | NULL | 1.3673710656485296 | 1.3673710656485296 | NULL | | 3.3219280948873626 | NULL | NULL | NULL | +--------------------+----------------------+--------------------+--------------------+
-
静态数据示例
NEGATIVE
-
命令格式
TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL negative(TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL <expr>)
-
命令说明
返回 expr 的负值。
-
参数说明
expr :必填。输入表达式,支持TINYINT、SMALLINT、INT、BIGINT、DOUBLE、DECIMAL类型。
-
返回值说明
返回 expr 表达式的负值。
-
示例
--返回-1。 SELECT negative(1);
POSITIVE
-
命令格式
TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL positive(TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL <expr>)
-
命令说明
返回 expr 的值。
-
参数说明
expr :必填。输入表达式,支持TINYINT、SMALLINT、INT、BIGINT、DOUBLE、DECIMAL类型。
-
返回值说明
返回 expr 表达式的值。
-
示例
--返回1。 SELECT positive(1);
POW
-
命令格式
double|decimal pow(<x>, <y>)
-
命令说明
计算 x 的 y 次方,即
x^y
。 -
参数说明
- x :必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
- y :必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
-
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
- x 或 y 为DOUBLE、DECIMAL类型时会返回相应的类型。
- x 或 y 为STRING、BIGINT类型时,返回DOUBLE类型。
- x 或 y 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回65536.0。 select pow(2, 16); --返回NULL。 select pow(2, null);
-
表数据示例
基于 示例数据 ,计算列的2次方,命令示例如下。
返回结果如下。select pow(bigint_data, 2) as bigint_new, pow(double_data, 2) as double_new, pow(decimal_data, 2) as decimal_new, pow(string_data, 2) as string_new from mf_math_fun_t;
+------------+----------------------+----------------------+------------+ | bigint_new | double_new | decimal_new | string_new | +------------+----------------------+----------------------+------------+ | 100.0 | 0.275625 | 0.275625 | 100.0 | | NULL | 0.010000000000000002 | 0.010000000000000002 | 100.0 | | 1.0 | NULL | 418.2025 | 900.0 | | 16.0 | 0.7921 | NULL | 900.0 | | 2500.0 | 1.0 | 1.0 | 2500.0 | | 36.0 | 2.25 | 2.25 | 2500.0 | | 4900.0 | 56.25 | 56.25 | NULL | | 1.0 | 104.03999999999999 | 104.03999999999999 | 1.0 | | 8100.0 | 6.6564000000000005 | 6.6564000000000005 | 0.0 | | 100.0 | 33.64 | 33.64 | 8100.0 | +------------+----------------------+----------------------+------------+
-
静态数据示例
RAND
-
命令格式
double rand(bigint <seed>)
-
命令说明
返回DOUBLE类型的随机数,返回值区间是0~1。
-
参数说明
seed :可选。BIGINT类型。随机数种子,决定随机数序列的起始值。
说明 您可以通过 seed 确定随机数序列, seed 确定后,即可固定该函数的返回结果。执行环境是一样的情况下, seed 取值不变的话,返回值是一样的,如果需要返回不一样的结果,需要修改 seed 取值。 -
返回值说明
返回DOUBLE类型。
-
示例
--返回4.7147460303803655E-4。 select rand(); --返回0.7308781907032909。 select rand(1);
ROUND
-
命令格式
double|decimal round(<number>[, bigint <decimal_places>])
-
命令说明
四舍五入到指定小数点位置。
-
参数说明
- number :必填。DOUBLE类型或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
-
decimal_places
:可选。BIGINT类型常量,四舍五入计算到小数点后的位置。如果省略表示四舍五入到个位数,默认值为0。
说明 decimal_places 可以是负数。负数会从小数点向左开始计数,并且不保留小数部分。如果 decimal_places 超过了整数部分长度,返回0。
-
返回值说明
返回DOUBLE类型或DECIMAL类型。返回规则如下:
- number 为DOUBLE、DECIMAL类型时会返回相应的类型。
- number 为STRING、BIGINT类型时,返回DOUBLE类型。
- decimal_places 非BIGINT类型时,返回报错。
- number 或 decimal_places 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回125.0。 select round(125.315); --返回125.3。 select round(125.315, 1); --返回125.32。 select round(125.315, 2); --返回125.315。 select round(125.315, 3); --返回-125.32。 select round(-125.315, 2); --返回100.0。 select round(123.345, -2); --返回NULL。 select round(null); --返回123.345。 select round(123.345, 4); --返回0.0。 select round(123.345, -4);
-
表数据示例
基于 示例数据 ,对列四舍五入到小数点指定位置,命令示例如下。
返回结果如下。select round(bigint_data, 1) as bigint_new, round(double_data, 2) as double_new, round(decimal_data, 1) as decimal_new, round(string_data) as string_new from mf_math_fun_t;
+------------+------------+-------------+------------+ | bigint_new | double_new | decimal_new | string_new | +------------+------------+-------------+------------+ | -10.0 | 0.53 | 0.5 | 10.0 | | NULL | -0.1 | -0.1 | -10.0 | | -1.0 | NULL | 20.5 | 30.0 | | 4.0 | 0.89 | NULL | -30.0 | | -50.0 | -1.0 | -1 | 50.0 | | 6.0 | 1.5 | 1.5 | -50.0 | | -70.0 | -7.5 | -7.5 | NULL | | 1.0 | -10.2 | -10.2 | -1.0 | | -90.0 | 2.58 | 2.6 | 0.0 | | 10.0 | -5.8 | -5.8 | -90.0 | +------------+------------+-------------+------------+
-
静态数据示例
SIN
-
命令格式
double|decimal sin(<number>)
-
命令说明
计算 number 的正弦函数,输入为弧度值。
-
参数说明
number :必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
-
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
- number 为DOUBLE、DECIMAL类型时会返回相应的类型。
- number 为STRING、BIGINT类型时,返回DOUBLE类型。
- number 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回-0.3048106211022167。 select sin(60); --返回NULL。 select sin(null);
-
表数据示例
基于 示例数据 ,计算列的正弦值,命令示例如下。
返回结果如下。select sin(bigint_data) as bigint_new, sin(double_data) as double_new, sin(decimal_data) as decimal_new, sin(string_data) as string_new from mf_math_fun_t;
+----------------------+----------------------+----------------------+----------------------+ | bigint_new | double_new | decimal_new | string_new | +----------------------+----------------------+----------------------+----------------------+ | 0.5440211108893698 | 0.5012130046737979 | 0.5012130046737979 | -0.5440211108893698 | | NULL | -0.09983341664682815 | -0.09983341664682815 | 0.5440211108893698 | | -0.8414709848078965 | NULL | 0.9995605376022045 | -0.9880316240928618 | | -0.7568024953079282 | 0.7770717475268238 | NULL | 0.9880316240928618 | | 0.26237485370392877 | -0.8414709848078965 | -0.8414709848078965 | -0.26237485370392877 | | -0.27941549819892586 | 0.9974949866040544 | 0.9974949866040544 | 0.26237485370392877 | | -0.7738906815578891 | -0.9379999767747389 | -0.9379999767747389 | NULL | | 0.8414709848078965 | 0.6998746875935423 | 0.6998746875935423 | -0.8414709848078965 | | -0.8939966636005579 | 0.5325349075556212 | 0.5325349075556212 | 0.0 | | -0.5440211108893698 | 0.46460217941375737 | 0.46460217941375737 | -0.8939966636005579 | +----------------------+----------------------+----------------------+----------------------+
-
静态数据示例
SINH
-
命令格式
double|decimal sinh(<number>)
-
命令说明
计算 number 的双曲正弦函数。
-
参数说明
number :必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
-
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
- number 为DOUBLE、DECIMAL类型时会返回相应的类型。
- number 为STRING、BIGINT类型时,返回DOUBLE类型。
- number 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回5.343237290762231E12。 select sinh(30); --返回NULL。 select sinh(null);
-
表数据示例
基于 示例数据 ,计算列的双曲正弦值,命令示例如下。
返回结果如下。select sinh(bigint_data) as bigint_new, sinh(double_data) as double_new, sinh(decimal_data) as decimal_new, sinh(string_data) as string_new from mf_math_fun_t;
+------------------------+----------------------+----------------------+-----------------------+ | bigint_new | double_new | decimal_new | string_new | +------------------------+----------------------+----------------------+-----------------------+ | -11013.232874703393 | 0.5494517420061382 | 0.5494517420061382 | 11013.232874703393 | | NULL | -0.10016675001984403 | -0.10016675001984403 | -11013.232874703393 | | -1.1752011936438014 | NULL | 380445243.96844625 | 5343237290762.231 | | 27.28991719712775 | 1.0122369492687646 | NULL | -5343237290762.231 | | -2.592352764293536e21 | -1.1752011936438014 | -1.1752011936438014 | 2.592352764293536e21 | | 201.71315737027922 | 2.1292794550948173 | 2.1292794550948173 | -2.592352764293536e21 | | -1.2577193354595834e30 | -904.0209306858466 | -904.0209306858466 | NULL | | 1.1752011936438014 | -13451.593018563612 | -13451.593018563612 | -1.1752011936438014 | | -6.102016471589204e38 | 6.560682077817757 | 6.560682077817757 | 0.0 | | 11013.232874703393 | -165.1482661774516 | -165.1482661774516 | -6.102016471589204e38 | +------------------------+----------------------+----------------------+-----------------------+
-
静态数据示例
SQRT
-
命令格式
double|decimal sqrt(<number>)
-
命令说明
计算 number 的平方根。
-
参数说明
number :必填。DOUBLE或DECIMAL类型,必须大于0,小于0时返回NULL。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
-
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
- number 为DOUBLE、DECIMAL类型时会返回相应的类型。
- number 为STRING、BIGINT类型时,返回DOUBLE类型。
- number 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回2.0。 select sqrt(4); --返回NULL。 select sqrt(null);
-
表数据示例
基于 示例数据 ,计算列的平方根,命令示例如下。
返回结果如下。select sqrt(bigint_data) as bigint_new, sqrt(double_data) as double_new, sqrt(decimal_data) as decimal_new, sqrt(string_data) as string_new from mf_math_fun_t;
+--------------------+--------------------+-------------------+--------------------+ | bigint_new | double_new | decimal_new | string_new | +--------------------+--------------------+-------------------+--------------------+ | NULL | 0.724568837309472 | 0.724568837309472 | 3.1622776601683795 | | NULL | NULL | NULL | NULL | | NULL | NULL | 4.522167621838006 | 5.477225575051661 | | 2.0 | 0.9433981132056604 | NULL | NULL | | NULL | NULL | NULL | 7.0710678118654755 | | 2.449489742783178 | 1.224744871391589 | 1.224744871391589 | NULL | | NULL | NULL | NULL | NULL | | 1.0 | NULL | NULL | NULL | | NULL | 1.606237840420901 | 1.606237840420901 | 0.0 | | 3.1622776601683795 | NULL | NULL | NULL | +--------------------+--------------------+-------------------+--------------------+
-
静态数据示例
TAN
-
命令格式
double|decimal tan(<number>)
-
命令说明
计算 number 的正切函数,输入为弧度值。
-
参数说明
number :必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
-
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
- number 为DOUBLE、DECIMAL类型时会返回相应的类型。
- number 为STRING、BIGINT类型时,返回DOUBLE类型。
- number 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回-6.405331196646276。 select tan(30); --返回NULL。 select tan(null);
-
表数据示例
基于 示例数据 ,计算列的正切值,命令示例如下。
返回结果如下。select tan(bigint_data) as bigint_new, tan(double_data) as double_new, tan(decimal_data) as decimal_new, tan(string_data) as string_new from mf_math_fun_t;
+----------------------+----------------------+----------------------+----------------------+ | bigint_new | double_new | decimal_new | string_new | +----------------------+----------------------+----------------------+----------------------+ | -0.6483608274590866 | 0.5792200822893652 | 0.5792200822893652 | 0.6483608274590866 | | NULL | -0.10033467208545055 | -0.10033467208545055 | -0.6483608274590866 | | -1.5574077246549023 | NULL | -33.71948732190433 | -6.405331196646276 | | 1.1578212823495775 | 1.2345994590490046 | NULL | 6.405331196646276 | | 0.27190061199763077 | -1.5574077246549023 | -1.5574077246549023 | -0.27190061199763077 | | -0.29100619138474915 | 14.101419947171719 | 14.101419947171719 | 0.27190061199763077 | | -1.2219599181369434 | -2.706013866772691 | -2.706013866772691 | NULL | | 1.5574077246549023 | -0.979852083895097 | -0.979852083895097 | -1.5574077246549023 | | 1.995200412208242 | -0.6291704256385503 | -0.6291704256385503 | 0.0 | | 0.6483608274590866 | 0.5246662219468002 | 0.5246662219468002 | 1.995200412208242 | +----------------------+----------------------+----------------------+----------------------+
-
静态数据示例
TANH
-
命令格式
double|decimal tanh(<number>)
-
命令说明
计算 number 的双曲正切函数。
-
参数说明
number :必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
-
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
- number 为DOUBLE、DECIMAL类型时会返回相应的类型。
- number 为STRING、BIGINT类型时,返回DOUBLE类型。
- number 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回1.0。 select tanh(30); --返回NULL。 select tanh(null);
-
表数据示例
基于 示例数据 ,计算列的双曲正切值,命令示例如下。
返回结果如下。select tanh(bigint_data) as bigint_new, tanh(double_data) as double_new, tanh(decimal_data) as decimal_new, tanh(string_data) as string_new from mf_math_fun_t;
+---------------------+----------------------+----------------------+---------------------+ | bigint_new | double_new | decimal_new | string_new | +---------------------+----------------------+----------------------+---------------------+ | -0.9999999958776927 | 0.48154979836430806 | 0.48154979836430806 | 0.9999999958776927 | | NULL | -0.09966799462495582 | -0.09966799462495582 | -0.9999999958776927 | | -0.7615941559557649 | NULL | 1.0 | 1.0 | | 0.999329299739067 | 0.7113937318189625 | NULL | -1.0 | | -1.0 | -0.7615941559557649 | -0.7615941559557649 | 1.0 | | 0.9999877116507956 | 0.9051482536448664 | 0.9051482536448664 | -1.0 | | -1.0 | -0.9999993881955461 | -0.9999993881955461 | NULL | | 0.7615941559557649 | -0.9999999972367348 | -0.9999999972367348 | -0.7615941559557649 | | -1.0 | 0.9885821584459533 | 0.9885821584459533 | 0.0 | | 0.9999999958776927 | -0.9999816679925603 | -0.9999816679925603 | -1.0 | +---------------------+----------------------+----------------------+---------------------+
-
静态数据示例
TRUNC
-
命令格式
double|decimal trunc(<number>[, bigint <decimal_places>])
- 命令说明
-
参数说明
- number :必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
- decimal_places :可选。BIGINT类型常量,要截取到的小数点位置。省略此参数时默认截取到个位数。 decimal_places 可以是负数,负数会从小数点向左开始截取,并且不保留小数部分。如果 decimal_places 超过了整数部分长度,则返回0。
-
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
- number 为DOUBLE、DECIMAL类型时会返回相应的类型。
- number 为STRING、BIGINT类型时,返回DOUBLE类型。
- decimal_places 非BIGINT类型时,返回报错。
- number 或 decimal_places 值为NULL时,返回NULL。
说明-
返回DOUBLE类型时,返回的结果显示可能不符合预期,例如
trunc(125.815,1)
,这个DOUBLE类型显示问题任何系统都存在。 - 截取掉的部分补0。
-
示例
-
静态数据示例
--返回125.0。 select trunc(125.815,0); --返回125.80000000000001。 select trunc(125.815,1); --返回125.81。 select trunc(125.815,2); --返回125.815。 select trunc(125.815,3); --返回-125.81。 select trunc(-125.815,2); --返回120.0。 select trunc(125.815,-1); --返回100.0。 select trunc(125.815,-2); --返回0.0。 select trunc(125.815,-3); --返回123.345。 select trunc(123.345,4); --返回0.0。 select trunc(123.345,-4); --返回NULL。 select trunc(123.345,null);
-
表数据示例
基于 示例数据 ,将列截取到指定小数点位置,命令示例如下。
返回结果如下。select trunc(bigint_data, 1) as bigint_new, trunc(double_data,1) as double_new, trunc(decimal_data, 1) as decimal_new, trunc(string_data, 1) as string_new from mf_math_fun_t;
+------------+---------------------+-------------+------------+ | bigint_new | double_new | decimal_new | string_new | +------------+---------------------+-------------+------------+ | -10.0 | 0.5 | 0.5 | 10.0 | | NULL | -0.1 | -0.1 | -10.0 | | -1.0 | NULL | 20.4 | 30.0 | | 4.0 | 0.8 | NULL | -30.0 | | -50.0 | -1.0 | -1 | 50.0 | | 6.0 | 1.5 | 1.5 | -50.0 | | -70.0 | -7.5 | -7.5 | NULL | | 1.0 | -10.200000000000001 | -10.2 | -1.0 | | -90.0 | 2.5 | 2.5 | 0.0 | | 10.0 | -5.800000000000001 | -5.8 | -90.0 | +------------+---------------------+-------------+------------+
-
静态数据示例
BIN
-
命令格式
string bin(<number>)
-
命令说明
返回 number 的二进制代码表示。此函数为MaxCompute 2.0扩展函数。
-
参数说明
number :必填。BIGINT、INT、SMALLINT、TINYINT类型。
-
返回值说明
返回STRING类型。返回规则如下:
- number 非BIGINT、INT、SMALLINT、TINYINT类型时,返回报错。
- number 值为0时,返回0。
- number 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回0。 select bin(0); --返回NULL。 select bin(null); --返回1100。 select bin(12);
-
表数据示例
基于 示例数据 ,获取int_data和bigint_data两列的二进制表示形式,命令示例如下。
返回结果如下。--开启2.0新类型。此命令需要与SQL语句一起提交。 set odps.sql.type.system.odps2=true; select bin(int_data) as int_new, bin(bigint_data) as bigint_new from mf_math_fun_t;
+----------------------------------------------------------------------------+------------------------------------------------------------------+ | int_new | bigint_new | +----------------------------------------------------------------------------+------------------------------------------------------------------+ | NULL | 1111111111111111111111111111111111111111111111111111111111110110 | | 1111111111111111111111111111111111111111111111111111111111101100 | NULL | | 0 | 1111111111111111111111111111111111111111111111111111111111111111 | | 1111111111111111111111111111111111111111111111111111111111011000 | 100 | | 101 | 1111111111111111111111111111111111111111111111111111111111001110 | | 1111111111111111111111111111111111111111111111111111111111000100 | 110 | | 1111111111111111111111111111111111111111111111111111111111111111 | 1111111111111111111111111111111111111111111111111111111110111010 | | 1111111111111111111111111111111111111111111111111111111110110000 | 1 | | 1001 | 1111111111111111111111111111111111111111111111111111111110100110 | | 1111111111111111111111111111111111111111111111111111111110011100 | 1010 | +----------------------------------------------------------------------------+------------------------------------------------------------------+
-
静态数据示例
CBRT
-
命令格式
double cbrt(<number>)
-
命令说明
计算 number 的立方根。此函数为MaxCompute 2.0扩展函数。
-
参数说明
number :必填。BIGINT、INT、SMALLINT、TINYINT、DOUBLE、FLOAT、STRING类型数据。
-
返回值说明
返回DOUBLE类型。返回规则如下:
- number 非BIGINT、INT、SMALLINT、TINYINT、DOUBLE、FLOAT、STRING类型时,返回报错。
- number 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回2.0。 select cbrt(8); --返回NULL。 select cbrt(null);
-
表数据示例
基于 示例数据 ,获取除decimal_data之外其他列的立方根,命令示例如下。
返回结果如下。--开启2.0新类型。此命令需要与SQL语句一起提交。 set odps.sql.type.system.odps2=true; select cbrt(int_data) as int_new, cbrt(bigint_data) as bigint_new, cbrt(double_data) as double_new, cbrt(float_data) as float_new, cbrt(string_data) as string_new from mf_math_fun_t;
+---------------------+---------------------+----------------------+---------------------+---------------------+ | int_new | bigint_new | double_new | float_new | string_new | +---------------------+---------------------+----------------------+---------------------+---------------------+ | NULL | -2.1544346900318834 | 0.806714323012272 | 0.8067143108004823 | 2.1544346900318834 | | -2.7144176165949063 | NULL | -0.46415888336127786 | -0.46415888566678 | -2.1544346900318834 | | 0.0 | -1.0 | NULL | -1.0 | 3.107232505953859 | | -3.4199518933533937 | 1.5874010519681996 | 0.9619001716077046 | 0.961900166454112 | -3.107232505953859 | | 1.7099759466766968 | -3.6840314986403864 | -1.0 | NULL | 3.6840314986403864 | | -3.9148676411688634 | 1.8171205928321394 | 1.1447142425533317 | 1.1447142425533317 | -3.6840314986403864 | | -1.0 | -4.121285299808557 | -1.9574338205844317 | -1.9574338205844317 | NULL | | -4.308869380063767 | 1.0 | -2.168702885250197 | -2.1687028717323127 | -1.0 | | 2.080083823051904 | -4.481404746557165 | 1.3715339700741747 | 1.3715339565548288 | 0.0 | | -4.641588833612778 | 2.1544346900318834 | -1.7967017791430528 | -1.7967017988380907 | -4.481404746557165 | +---------------------+---------------------+----------------------+---------------------+---------------------+
-
静态数据示例
CORR
-
命令格式
double corr(<col1>, <col2>)
-
命令说明
计算两列数据的皮尔逊系数(Pearson Correlation Coefficien)。此函数为MaxCompute 2.0扩展函数。
-
参数说明
col1 、 col2 :必填。待计算皮尔逊系数的表的两个列名称。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL类型。 col1 和 col2 的数据类型可以不相同。
-
返回值说明
返回DOUBLE类型。如果某一输入列的某一行存在NULL值,该行不参与计算。
-
示例
基于 示例数据 ,计算double_data和float_data两列的皮尔逊系数,命令示例如下。
返回结果为1.0。select corr(double_data,float_data) from mf_math_fun_t;
DEGREES
-
命令格式
double degrees(<number>)
-
命令说明
将弧度转换为角度。
-
参数说明
number :必填。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、STRING类型。此函数为MaxCompute 2.0扩展函数。
-
返回值说明
返回DOUBLE类型。 number 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回90.0。 select degrees(1.5707963267948966); --返回0.0。 select degrees(0); --返回NULL。 select degrees(null);
-
表数据示例
基于 示例数据 ,获取所有列对应的角度,命令示例如下。
返回结果如下。--开启2.0新类型。此命令需要与SQL语句一起提交。 set odps.sql.type.system.odps2=true; select degrees(int_data) as int_new, degrees(bigint_data) as bigint_new, degrees(double_data) as double_new, degrees(decimal_data) as decimal_new, degrees(float_data) as float_new, degrees(string_data) as string_new from mf_math_fun_t;
+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+ | int_new | bigint_new | double_new | decimal_new | float_new | string_new | +---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+ | NULL | -572.9577951308232 | 30.08028424436822 | 30.08028424436822 | 30.080282878330387 | 572.9577951308232 | | -1145.9155902616465 | NULL | -5.729577951308232 | -5.729577951308232 | -5.729578036685597 | -572.9577951308232 | | 0.0 | -57.29577951308232 | NULL | 1171.6986910425335 | -57.29577951308232 | 1718.8733853924698 | | -2291.831180523293 | 229.1831180523293 | 50.99324376664326 | NULL | 50.99324294702057 | -1718.8733853924698 | | 286.4788975654116 | -2864.7889756541163 | -57.29577951308232 | -57.29577951308232 | NULL | 2864.7889756541163 | | -3437.7467707849396 | 343.77467707849394 | 85.94366926962348 | 85.94366926962348 | 85.94366926962348 | -2864.7889756541163 | | -57.29577951308232 | -4010.7045659157625 | -429.71834634811745 | -429.71834634811745 | -429.71834634811745 | NULL | | -4583.662361046586 | 57.29577951308232 | -584.4169510334397 | -584.4169510334397 | -584.416940105137 | -57.29577951308232 | | 515.662015617741 | -5156.620156177409 | 147.8231111437524 | 147.8231111437524 | 147.82310677243132 | 0.0 | | -5729.5779513082325 | 572.9577951308232 | -332.31552117587745 | -332.31552117587745 | -332.31553210418014 | -5156.620156177409 | +---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+
-
静态数据示例
E
-
命令格式
double e()
-
命令说明
返回
e
的值。此函数为MaxCompute 2.0扩展函数。 -
返回值说明
返回DOUBLE类型。
-
示例
--返回2.718281828459045。 select e();
FACTORIAL
-
命令格式
bigint factorial(<number>)
-
命令说明
返回 number 的阶乘。此函数为MaxCompute 2.0扩展函数。
-
参数说明
number :必填。BIGINT、INT、SMALLINT、TINYINT类型,且在[0,20]之间。
-
返回值说明
返回BIGINT类型。返回规则如下:
- number 值为0时,返回1。
- number 值为NULL或[0,20]之外的值,返回NULL。
-
示例
-
静态数据示例
--返回120。5!=5*4*3*2*1=120 select factorial(5); --返回1。 select factorial(0); --返回NULL。 select factorial(null);
-
表数据示例
基于 示例数据 ,计算int_data和bigint_data两列的阶乘,命令示例如下。
返回结果如下。--开启2.0新类型。此命令需要与SQL语句一起提交。 set odps.sql.type.system.odps2=true; select factorial(int_data) as int_new, factorial(bigint_data) as bigint_new from mf_math_fun_t;
+------------+------------+ | int_new | bigint_new | +------------+------------+ | NULL | NULL | | NULL | NULL | | 1 | NULL | | NULL | 24 | | 120 | NULL | | NULL | 720 | | NULL | NULL | | NULL | 1 | | 362880 | NULL | | NULL | 3628800 | +------------+------------+
-
静态数据示例
FORMAT_NUMBER
-
命令格式
string format_number(float|double|decimal <expr1>, <expr2>)
-
命令说明
将数字转化为指定格式的字符串。此函数为MaxCompute 2.0扩展函数。
-
参数说明
- expr1 :必填。需要格式化的数据。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、STRING类型。
-
expr2
:必填。需要转化的目标格式。指定需要保留小数位数。也可以为类似
#,###,###.##
格式描述。
-
返回值说明
返回STRING类型数据。返回规则如下:
- 如果 expr2 >0,则四舍五入到小数点后指定位数。
- 如果 expr2 =0,则没有小数点或小数部分。
- 如果 expr2 <0,或者 expr2 >340,则返回报错。
- expr1 或 expr2 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回5.230。 select format_number(5.230134523424545456,3); --返回12,332.123。 select format_number(12332.123456, '#,###,###,###.###'); --返回NULL。 select format_number(null,3);
-
表数据示例
基于 示例数据 ,将所有列保留指定小数位数,命令示例如下。
返回结果如下。--开启2.0新类型。此命令需要与SQL语句一起提交。 set odps.sql.type.system.odps2=true; select format_number(int_data, 1) as int_new, format_number(bigint_data, 1) as bigint_new, format_number(double_data, 2) as double_new, format_number(decimal_data, 1) as decimal_new, format_number(float_data, 0) as float_new, format_number(string_data, 1) as string_new from mf_math_fun_t;
+---------+------------+------------+-------------+-----------+------------+ | int_new | bigint_new | double_new | decimal_new | float_new | string_new | +---------+------------+------------+-------------+-----------+------------+ | NULL | -10.0 | 0.53 | 0.5 | 1 | 10.0 | | -20.0 | NULL | -0.10 | -0.1 | -0 | -10.0 | | 0.0 | -1.0 | NULL | 20.5 | -1 | 30.0 | | -40.0 | 4.0 | 0.89 | NULL | 1 | -30.0 | | 5.0 | -50.0 | -1.00 | -1.0 | NULL | 50.0 | | -60.0 | 6.0 | 1.50 | 1.5 | 2 | -50.0 | | -1.0 | -70.0 | -7.50 | -7.5 | -8 | NULL | | -80.0 | 1.0 | -10.20 | -10.2 | -10 | -1.0 | | 9.0 | -90.0 | 2.58 | 2.6 | 3 | 0.0 | | -100.0 | 10.0 | -5.80 | -5.8 | -6 | -90.0 | +---------+------------+------------+-------------+-----------+------------+
-
静态数据示例
HEX
-
命令格式
string hex(<number>)
-
命令说明
将数值或字符串转换为十六进制格式。此函数为MaxCompute 2.0扩展函数。
-
参数说明
number :必填。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、STRING类型。
-
返回值说明
返回STRING类型。返回规则如下:
- number 值非0或非NULL时,返回STRING类型。
- number 值为0时,返回0。
- number 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回0。 select hex(0); --返回616263。 select hex('abc'); --返回11。 select hex(17); --返回3137。 select hex('17'); --返回报错。 select hex(null);
-
表数据示例
基于 示例数据 ,将所有列转换为十六进制表示形式,命令示例如下。
返回结果如下。--开启2.0新类型。此命令需要与SQL语句一起提交。 set odps.sql.type.system.odps2=true; select hex(int_data) as int_new, hex(bigint_data) as bigint_new, hex(double_data) as double_new, hex(decimal_data) as decimal_new, hex(float_data) as float_new, hex(string_data) as string_new from mf_math_fun_t;
+------------------+------------------+------------+-------------+------------+------------+ | int_new | bigint_new | double_new | decimal_new | float_new | string_new | +------------------+------------------+------------+-------------+------------+------------+ | NULL | FFFFFFFFFFFFFFF6 | 302E353235 | 302E353235 | 302E353235 | 3130 | | FFFFFFFFFFFFFFEC | NULL | 2D302E31 | 2D302E31 | 2D302E31 | 2D3130 | | 0 | FFFFFFFFFFFFFFFF | NULL | 32302E3435 | 2D31 | 3330 | | FFFFFFFFFFFFFFD8 | 4 | 302E3839 | NULL | 302E3839 | 2D3330 | | 5 | FFFFFFFFFFFFFFCE | 2D312E30 | 2D31 | NULL | 3530 | | FFFFFFFFFFFFFFC4 | 6 | 312E35 | 312E35 | 312E35 | 2D3530 | | FFFFFFFFFFFFFFFF | FFFFFFFFFFFFFFBA | 2D372E35 | 2D372E35 | 2D372E35 | NULL | | FFFFFFFFFFFFFFB0 | 1 | 2D31302E32 | 2D31302E32 | 2D31302E32 | 2D31 | | 9 | FFFFFFFFFFFFFFA6 | 322E3538 | 322E3538 | 322E3538 | 30 | | FFFFFFFFFFFFFF9C | A | 2D352E38 | 2D352E38 | 2D352E38 | 2D3930 | +------------------+------------------+------------+-------------+------------+------------+
-
静态数据示例
LOG2
-
命令格式
double log2(<number>)
-
命令说明
返回以2为底, number 的对数。此函数为MaxCompute 2.0扩展函数。
-
参数说明
number :必填。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、STRING类型。
-
返回值说明
返回DOUBLE类型。 number 值为0、负数或NULL时,返回NULL。
-
示例
-
静态数据示例
--返回NULL。 select log2(null); --返回NULL。 select log2(0); --返回3.0。 select log2(8);
-
表数据示例
基于 示例数据 ,计算所有列以2为底的对数,命令示例如下。
返回结果如下。--开启2.0新类型。此命令需要与SQL语句一起提交。 set odps.sql.type.system.odps2=true; select log2(int_data) as int_new, log2(bigint_data) as bigint_new, log2(double_data) as double_new, log2(decimal_data) as decimal_new, log2(float_data) as float_new, log2(string_data) as string_new from mf_math_fun_t;
+--------------------+--------------------+----------------------+--------------------+----------------------+--------------------+ | int_new | bigint_new | double_new | decimal_new | float_new | string_new | +--------------------+--------------------+----------------------+--------------------+----------------------+--------------------+ | NULL | NULL | -0.929610672108602 | -0.929610672108602 | -0.9296107376258038 | 3.3219280948873626 | | NULL | NULL | NULL | NULL | NULL | NULL | | NULL | NULL | NULL | 4.354028938054387 | NULL | 4.906890595608519 | | NULL | 2.0 | -0.16812275880832692 | NULL | -0.16812278199699915 | NULL | | 2.321928094887362 | NULL | NULL | NULL | NULL | 5.643856189774724 | | NULL | 2.584962500721156 | 0.5849625007211562 | 0.5849625007211562 | 0.5849625007211562 | NULL | | NULL | NULL | NULL | NULL | NULL | NULL | | NULL | 0.0 | NULL | NULL | NULL | NULL | | 3.1699250014423126 | NULL | 1.3673710656485296 | 1.3673710656485296 | 1.367371022986166 | NULL | | NULL | 3.3219280948873626 | NULL | NULL | NULL | NULL | +--------------------+--------------------+----------------------+--------------------+----------------------+--------------------+
-
静态数据示例
LOG10
-
命令格式
double log10(<number>)
-
命令说明
返回以10为底, number 的对数。此函数为MaxCompute 2.0扩展函数。
-
参数说明
number :必填。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、STRING类型。
-
返回值说明
返回DOUBLE类型。 number 值为0、负数或NULL时,返回NULL。
-
示例
-
静态数据示例
--返回NULL。 select log10(null); --返回NULL。 select log10(0); --返回0.9030899869919435。 select log10(8);
-
表数据示例
基于 示例数据 ,计算所有列以10为底的对数,命令示例如下。
返回结果如下。--开启2.0新类型。此命令需要与SQL语句一起提交。 set odps.sql.type.system.odps2=true; select log10(int_data) as int_new, log10(bigint_data) as bigint_new, log10(double_data) as double_new, log10(decimal_data) as decimal_new, log10(float_data) as float_new, log10(string_data) as string_new from mf_math_fun_t;
+--------------------+--------------------+---------------------+---------------------+-----------------------+--------------------+ | int_new | bigint_new | double_new | decimal_new | float_new | string_new | +--------------------+--------------------+---------------------+---------------------+-----------------------+--------------------+ | NULL | NULL | -0.2798406965940431 | -0.2798406965940431 | -0.27984071631668606 | 1.0 | | NULL | NULL | NULL | NULL | NULL | NULL | | NULL | NULL | NULL | 1.3106933123433606 | NULL | 1.4771212547196624 | | NULL | 0.6020599913279623 | -0.0506099933550872 | NULL | -0.050610000335573106 | NULL | | 0.6989700043360187 | NULL | NULL | NULL | NULL | 1.6989700043360185 | | NULL | 0.7781512503836435 | 0.17609125905568124 | 0.17609125905568124 | 0.17609125905568124 | NULL | | NULL | NULL | NULL | NULL | NULL | NULL | | NULL | 0.0 | NULL | NULL | NULL | NULL | | 0.9542425094393249 | NULL | 0.4116197059632301 | 0.4116197059632301 | 0.411619693120579 | NULL | | NULL | 1.0 | NULL | NULL | NULL | NULL | +--------------------+--------------------+---------------------+---------------------+-----------------------+--------------------+
-
静态数据示例
PI
-
命令格式
double pi()
-
命令说明
返回π的值。此函数为MaxCompute 2.0扩展函数。
-
返回值说明
返回DOUBLE类型。
-
示例
--返回3.141592653589793。 select pi();
RADIANS
-
命令格式
double radians(<number>)
-
命令说明
将角度转换为弧度。此函数为MaxCompute 2.0扩展函数。
-
参数说明
number :必填。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、STRING类型。
-
返回值说明
返回DOUBLE类型。 number 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回1.5707963267948966。 select radians(90); --返回0.0。 select radians(0); --返回NULL。 select radians(null);
-
表数据示例
基于 示例数据 ,计算所有列转换为弧度,命令示例如下。
返回结果如下。--开启2.0新类型。此命令需要与SQL语句一起提交。 set odps.sql.type.system.odps2=true; select radians(int_data) as int_new, radians(bigint_data) as bigint_new, radians(double_data) as double_new, radians(decimal_data) as decimal_new, radians(float_data) as float_new, radians(string_data) as string_new from mf_math_fun_t;
+-----------------------+-----------------------+------------------------+------------------------+------------------------+-----------------------+ | int_new | bigint_new | double_new | decimal_new | float_new | string_new | +-----------------------+-----------------------+------------------------+------------------------+------------------------+-----------------------+ | NULL | -0.17453292519943295 | 0.00916297857297023 | 0.00916297857297023 | 0.009162978156851308 | 0.17453292519943295 | | -0.3490658503988659 | NULL | -0.0017453292519943296 | -0.0017453292519943296 | -0.0017453292780017621 | -0.17453292519943295 | | 0.0 | -0.017453292519943295 | NULL | 0.3569198320328404 | -0.017453292519943295 | 0.5235987755982988 | | -0.6981317007977318 | 0.06981317007977318 | 0.015533430342749534 | NULL | 0.015533430093078181 | -0.5235987755982988 | | 0.08726646259971647 | -0.8726646259971648 | -0.017453292519943295 | -0.017453292519943295 | NULL | 0.8726646259971648 | | -1.0471975511965976 | 0.10471975511965977 | 0.02617993877991494 | 0.02617993877991494 | 0.02617993877991494 | -0.8726646259971648 | | -0.017453292519943295 | -1.2217304763960306 | -0.1308996938995747 | -0.1308996938995747 | -0.1308996938995747 | NULL | | -1.3962634015954636 | 0.017453292519943295 | -0.17802358370342158 | -0.17802358370342158 | -0.17802358037447025 | -0.017453292519943295 | | 0.15707963267948966 | -1.5707963267948966 | 0.045029494701453704 | 0.045029494701453704 | 0.04502949336987316 | 0.0 | | -1.7453292519943295 | 0.17453292519943295 | -0.10122909661567112 | -0.10122909661567112 | -0.10122909994462247 | -1.5707963267948966 | +-----------------------+-----------------------+------------------------+------------------------+------------------------+-----------------------+
-
静态数据示例
SIGN
-
命令格式
double sign(<number>)
-
命令说明
获取输入参数的符号。此函数为MaxCompute 2.0扩展函数。
-
参数说明
number :必填。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、STRING类型。
-
返回值说明
返回DOUBLE类型。返回规则如下:
- number 值为正数时,返回1.0。
- number 值为负数时,返回-1.0。
- number 值为0时,返回0.0。
- number 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回-1.0。 select sign(-2.5); --返回1.0。 select sign(2.5); --返回0.0。 select sign(0); --返回NULL。 select sign(null);
-
表数据示例
基于 示例数据 ,获取所有列数据的符号,命令示例如下。
返回结果如下。--开启2.0新类型。此命令需要与SQL语句一起提交。 set odps.sql.type.system.odps2=true; select sign(int_data) as int_new, sign(bigint_data) as bigint_new, sign(double_data) as double_new, sign(decimal_data) as decimal_new, sign(float_data) as float_new, sign(string_data) as string_new from mf_math_fun_t;
+------------+------------+------------+-------------+------------+------------+ | int_new | bigint_new | double_new | decimal_new | float_new | string_new | +------------+------------+------------+-------------+------------+------------+ | NULL | -1.0 | 1.0 | 1 | 1.0 | 1.0 | | -1.0 | NULL | -1.0 | -1 | -1.0 | -1.0 | | 0.0 | -1.0 | NULL | 1 | -1.0 | 1.0 | | -1.0 | 1.0 | 1.0 | NULL | 1.0 | -1.0 | | 1.0 | -1.0 | -1.0 | -1 | NULL | 1.0 | | -1.0 | 1.0 | 1.0 | 1 | 1.0 | -1.0 | | -1.0 | -1.0 | -1.0 | -1 | -1.0 | NULL | | -1.0 | 1.0 | -1.0 | -1 | -1.0 | -1.0 | | 1.0 | -1.0 | 1.0 | 1 | 1.0 | 0.0 | | -1.0 | 1.0 | -1.0 | -1 | -1.0 | -1.0 | +------------+------------+------------+-------------+------------+------------+
-
静态数据示例
SHIFTLEFT
-
命令格式
int shiftleft(tinyint|smallint|int <number1>, int <number2>) bigint shiftleft(bigint <number1>, int <number2>)
-
命令说明
按位左移(<<)。此函数为MaxCompute 2.0扩展函数。
-
参数说明
- number1 :必填。TINYINT、SMALLINT、INT或BIGINT类型。
- number2 :必填。INT类型。
-
返回值说明
返回INT或BIGINT类型。返回规则如下
- number1 非TINYINT、SMALLINT、INT或BIGINT类型时,返回报错。
- number2 非INT类型时,返回报错。
- number1 或 number2 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回4。1的二进制左移2位(1<<2,0001左移两位是0100)。 select shiftleft(1,2); --返回32。4的二进制左移3位(4<<3,0100左移3位是100000)。 select shiftleft(4,3); --返回NULL。 select shiftleft(null,2);
-
表数据示例
基于 示例数据 ,将int_data和bigint_data列按位左移,命令示例如下。
返回结果如下。--开启2.0新类型。此命令需要与SQL语句一起提交。 set odps.sql.type.system.odps2=true; select shiftleft(int_data, 1) as int_new, shiftleft(bigint_data, 1) as bigint_new from mf_math_fun_t;
+---------+------------+ | int_new | bigint_new | +---------+------------+ | NULL | -20 | | -40 | NULL | | 0 | -2 | | -80 | 8 | | 10 | -100 | | -120 | 12 | | -2 | -140 | | -160 | 2 | | 18 | -180 | | -200 | 20 | +---------+------------+
-
静态数据示例
SHIFTRIGHT
-
命令格式
int shiftright(tinyint|smallint|int <number1>, int <number2>) bigint shiftright(bigint <number1>, int <number2>)
-
命令说明
按位右移(>>)。此函数为MaxCompute 2.0扩展函数。
-
参数说明
- number1 :必填。TINYINT、SMALLINT、INT或BIGINT类型。
- number2 :必填。INT类型。
-
返回值说明
返回INT或BIGINT类型。返回规则如下:
- number1 非TINYINT、SMALLINT、INT或BIGINT类型时,返回报错。
- number2 非INT类型时,返回报错。
- number1 或 number2 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回1。4的二进制右移2位(4>>2,0100右移两位是0001)。 select shiftright(4,2); --返回4。32的二进制右移3位(32>>3,100000右移3位是0100)。 select shiftright(32,3); --返回NULL。 select shiftright(null,3);
-
表数据示例
基于 示例数据 ,将int_data和bigint_data列按位右移,命令示例如下。
返回结果如下。--开启2.0新类型。此命令需要与SQL语句一起提交。 set odps.sql.type.system.odps2=true; select shiftright(int_data, 1) as int_new, shiftright(bigint_data, 1) as bigint_new from mf_math_fun_t;
+---------+------------+ | int_new | bigint_new | +---------+------------+ | NULL | -5 | | -10 | NULL | | 0 | -1 | | -20 | 2 | | 2 | -25 | | -30 | 3 | | -1 | -35 | | -40 | 0 | | 4 | -45 | | -50 | 5 | +---------+------------+
-
静态数据示例
SHIFTRIGHTUNSIGNED
-
命令格式
int shiftrightunsigned(tinyint|smallint|int <number1>, int <number2>) bigint shiftrightunsigned(bigint <number1>, int <number2>)
-
命令说明
无符号按位右移(>>>)。此函数为MaxCompute 2.0扩展函数。
-
参数说明
- number1 :必填。TINYINT、SMALLINT、INT或BIGINT整型数据。
- number2 :必填。INT整型数据。
-
返回值说明
返回INT或BIGINT类型。返回规则如下:
- number1 非TINYINT、SMALLINT、INT或BIGINT类型时,返回报错。
- number2 非INT类型时,返回报错。
- number1 或 number2 值为NULL时,返回NULL。
-
示例
-
静态数据示例
--返回2。8的二进制无符号右移2位(8>>>2,1000右移两位是0010)。 select shiftrightunsigned(8,2); --返回1073741820。-14的二进制右移2位(-14>>>2, 11111111 11111111 11111111 11110010右移2位是00111111 11111111 11111111 11111100)。 select shiftrightunsigned(-14,2); --返回NULL。 select shiftrightunsigned(-14,null);
-
表数据示例
基于 示例数据 ,返回int_data和bigint_data列的无符号按位右移值,命令示例如下。
返回结果如下。--开启2.0新类型。此命令需要与SQL语句一起提交。 set odps.sql.type.system.odps2=true; select shiftrightunsigned(int_data, 1) as int_new, shiftrightunsigned(bigint_data, 1) as bigint_new from mf_math_fun_t;
+------------+---------------------+ | int_new | bigint_new | +------------+---------------------+ | NULL | 9223372036854775803 | | 2147483638 | NULL | | 0 | 9223372036854775807 | | 2147483628 | 2 | | 2 | 9223372036854775783 | | 2147483618 | 3 | | 2147483647 | 9223372036854775773 | | 2147483608 | 0 | | 4 | 9223372036854775763 | | 2147483598 | 5 | +------------+---------------------+
-
静态数据示例
UNHEX
-
命令格式
binary unhex(string <number>)
-
命令说明
返回十六进制字符串所代表的字符串。此函数为MaxCompute 2.0扩展函数。
-
参数说明
number :必填。为十六进制字符串。
-
返回值说明
返回BINARY类型。返回规则如下:
- number 值为0时,返回报错。
- number 值为NULL时,返回NULL。
-
示例
--返回abc。 select unhex('616263'); --返回abc。 select unhex(616263); --返回NULL。 select unhex(null);
WIDTH_BUCKET
-
命令格式
width_bucket(numeric <expr>, numeric <min_value>, numeric <max_value>, int <num_buckets>)
-
命令说明
设定分组范围的最小值、最大值和分组个数,构建指定个数的大小相同的分组,返回指定字段值落入的分组编号。支持的数据类型为BIGINT、INT、FLOAT、DOUBLE、DECIMAL以及数据类型2.0的DECIMAL(precision,scale),详情请参见 2.0数据类型版本 。此函数为MaxCompute 2.0扩展函数。
-
参数说明
- expr :必填。需要判断分组编号的字段。
- min_value :必填。分组范围最小值。
- max_value :必填。分组范围最大值,最大值必须比最小值大。
- num_buckets :必填。分组个数,必须大于0。
-
返回值说明
返回值为BIGINT类型,范围为0到设定的分组个数+1。返回规则如下:
- expr 值小于 min_value 时,返回0。
- expr 大于 max_value 时,返回设定的分组个数+1。
-
expr
值为NULL时,分组编号返回值也为NULL。其他情况返回字段值落入的分组编号。字段值对应的分组编号取值规则为
floor( num_buckets * (expr - min_value)/(max_value - min_value) + 1)
。 - min_value 、 max_value 或 num_buckets 值为NULL时,返回NULL。
-
示例
-
示例1:入参无NULL。命令示例如下。
返回结果如下。select key,value,width_bucket(value,100,500,5) as value_group from values (1,99), (2,100), (3,199), (4,200), (5,499), (6,500), (7,501), (8,NULL) as t(key,value);
+-------+--------+-------------+ | key | value | value_group | +-------+--------+-------------+ | 1 | 99 | 0 | | 2 | 100 | 1 | | 3 | 199 | 2 | | 4 | 200 | 2 | | 5 | 499 | 5 | | 6 | 500 | 6 | | 7 | 501 | 6 | | 8 | \N | \N | +-------+--------+-------------+
-
示例2:入参存在NULL。命令示例如下。
返回结果如下。select key,value,width_bucket(value,100,500,null) as value_group from values (1,99), (2,100), (3,199), (4,200), (5,499), (6,500), (7,501), (8,NULL) as t(key,value);
+------+-------+-------------+ | key | value | value_group | +------+-------+-------------+ | 1 | 99 | NULL | | 2 | 100 | NULL | | 3 | 199 | NULL | | 4 | 200 | NULL | | 5 | 499 | NULL | | 6 | 500 | NULL | | 7 | 501 | NULL | | 8 | NULL | NULL | +------+-------+-------------+
-
示例1:入参无NULL。命令示例如下。