MaxCompute SQL提供了常见的数学函数供您在开发过程中使用,您可以根据实际需要选择合适的数学函数,进行数据计算、数据转换相关操作。本文为您提供MaxCompute SQL支持的数学函数的命令格式、参数说明及示例,指导您使用数学函数完成开发。
函数 | 功能 |
---|---|
ABS | 计算绝对值。 |
ACOS | 计算反余弦值。 |
ASIN | 计算反正弦值。 |
ATAN | 计算反正切值。 |
CEIL | 计算向上取整值。 |
CONV | 计算进制转换值。 |
COS | 计算余弦值。 |
COSH | 计算双曲余弦值。 |
COT | 计算余切值。 |
EXP | 计算指数值。 |
FLOOR | 计算向下取整值。 |
LN | 计算自然对数。 |
LOG | 计算log对数值。 |
POW | 计算幂值。 |
RAND | 返回随机数。 |
ROUND | 返回四舍五入到指定小数点位置的值。 |
SIN | 计算正弦值。 |
SINH | 计算双曲正弦值。 |
SQRT | 计算平方根。 |
TAN | 计算正切值。 |
TANH | 计算双曲正切值。 |
TRUNC | 返回截取到指定小数点位置的值。 |
BIN | 计算二进制代码值。 |
CBRT | 计算立方根值。 |
DEGREES | 将弧度转换为角度。 |
E | 返回e的值。 |
FACTORIAL | 计算阶乘值。 |
FORMAT_NUMBER | 将数字转化为指定格式的字符串。 |
HEX | 返回整数或字符串的十六进制格式。 |
LOG2 | 计算以2为底的对数。 |
LOG10 | 计算以10为底的对数。 |
PI | 返回π的值。 |
RADIANS | 将角度转换为弧度。 |
SIGN | 返回输入参数的符号。 |
SHIFTLEFT | 计算按位左移值。 |
SHIFTRIGHT | 计算按位右移值。 |
SHIFTRIGHTUNSIGNED | 计算无符号按位右移值。 |
UNHEX | 返回十六进制字符串所代表的字符串。 |
WIDTH_BUCKET | 返回指定字段值落入的分组编号。 |
ABS
- 命令格式
double abs(double <number>) bigint abs(bigint <number>) decimal abs(decimal <number>)
- 命令说明
计算number的绝对值。
- 参数说明
number:必填。当number为DOUBLE、BIGINT或DECIMAL类型时会返回相应的类型。
- 输入为BIGINT,则返回BIGINT类型。
- 输入为DOUBLE,则返回DOUBLE类型。
- 输入为DECIMAL,则返回DECIMAL类型。
- 输入为STRING,则隐式转换为DOUBLE类型后参与运算。
- 输入为NULL,则返回NULL。
- 输入非以上5种类型,则返回报错。
说明 当输入BIGINT类型的值超过BIGINT的最大表示范围时,会返回DOUBLE类型,但可能会损失精度。 - 返回值说明
返回值类型取决于输入参数的类型,包含DOUBLE、BIGINT或DECIMAL类型。
- 示例
--返回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;
ACOS
- 命令格式
double acos(double <number>) decimal acos(decimal <number>)
- 命令说明
计算number的反余弦函数。
- 参数说明
number:必填。DOUBLE类型或DECIMAL类型,取值范围为[-1,1]。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。输入为其他数据类型时则返回报错。
- 返回值说明
返回DOUBLE类型或DECIMAL类型,值域在0~π之间。如果输入参数为NULL,则返回NULL。
- 示例
--返回0.5155940062460905。 select acos("0.87"); --返回1.5707963267948966。 select acos(0);
ASIN
- 命令格式
double asin(double <number>) decimal asin(decimal <number>)
- 命令说明
计算number的反正弦函数。
- 参数说明
number:必填。DOUBLE类型或DECIMAL类型,取值范围为[-1,1]。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他数据类型则返回报错。
- 返回值说明
返回DOUBLE类型或DECIMAL类型,值域在-π/2~π/2之间。如果输入参数为NULL,则返回NULL。
- 示例
--返回1.5707963267948966。 select asin(1); --返回-1.5707963267948966。 select asin(-1);
ATAN
- 命令格式
double atan(double <number>)
- 命令说明
计算number的反正切函数。
- 参数说明
number:必填。DOUBLE类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他数据类型则返回报错。
- 返回值说明
返回DOUBLE类型,值域在-π/2~π/2之间。如果输入参数为NULL,则返回NULL。
- 示例
--返回0.7853981633974483。 select atan(1); --返回-0.7853981633974483。 select atan(-1);
CEIL
- 命令格式
bigint ceil(double <value>) bigint ceil(decimal <value>)
- 命令说明
向上取整,返回不小于输入值value的最小整数。
- 参数说明
value:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回报错。
- 返回值说明
返回BIGINT类型。如果输入参数为NULL,则返回NULL。
- 示例
--返回2。 select ceil(1.1); --返回-1。 select ceil(-1.1);
CONV
- 命令格式
string conv(string <input>, bigint <from_base>, bigint <to_base>)
- 命令说明
该函数为进制转换函数。
- 参数说明
- input:必填。以STRING表示的要转换的整数值,支持BIGINT和DOUBLE的隐式转换。
- from_base、to_base:必填。以十进制表示的进制值,支持的值为2、8、10和16。支持STRING及DOUBLE类型的隐式转换。
- 返回值说明
返回STRING类型。如果任一输入参数为NULL,则返回NULL。转换过程以64位精度工作,溢出时返回报错。输入如果是负值,即以短划线(-)开头,返回报错。如果输入的是小数,会转为整数值后进行进制转换,小数部分会被舍弃。
- 示例
--返回12。 select conv('1100', 2, 10); --返回C。 select conv('1100', 2, 16); --返回171。 select conv('ab', 16, 10); --返回AB。 select conv('ab', 16, 16);
COS
- 命令格式
double cos(double <number>) decimal cos(decimal <number>)
- 命令说明
计算number的余弦函数,输入为弧度值。
- 参数说明
number:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回报错。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。
- 示例
--返回2.6794896585028633e-8。 select cos(3.1415926/2); --返回-0.9999999999999986。 select cos(3.1415926);
COSH
- 命令格式
double cosh(double <number>) decimal cosh(decimal <number>)
- 命令说明
计算number的双曲余弦函数。
- 参数说明
number:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回报错。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。
- 示例
--返回2.5091784169949913。 select cosh(3.1415926/2);
COT
- 命令格式
double cot(double <number>) decimal cot(decimal <number>)
- 命令说明
计算number的余切函数,输入为弧度值。
- 参数说明
number:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回报错。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。
- 示例
--返回2.6794896585028643E-8。 select cot(3.1415926/2);
EXP
- 命令格式
double exp(double <number>) decimal exp(decimal <number>)
- 命令说明
计算number的指数函数。
- 参数说明
number:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回报错。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。
- 示例
--返回4.810477252069109。 select exp(3.1415926/2);
FLOOR
- 命令格式
bigint floor(double <number>) bigint floor(decimal <number>)
- 命令说明
向下取整,返回不大于number的最大整数值。
- 参数说明
number:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回报错。
- 返回值说明
返回BIGINT类型。如果输入参数为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);
LN
- 命令格式
double ln(double <number>) decimal ln(decimal <number>)
- 命令说明
计算number的自然对数。
- 参数说明
number:必填。DOUBLE类型或DECIMAL类型。
- 如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回报错。
- 如果输入参数为NULL,则返回NULL;如果输入参数为负数或0,则返回报错。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。
- 示例
--返回1.144729868791239。 select ln(3.1415926);
LOG
- 命令格式
double log(double <base>, double <x>) decimal log(decimal <base>, decimal <x>)
- 命令说明
计算以base为底的x的对数。
- 参数说明
- base:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回报错。
- x:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回报错。
- 返回值说明
返回DOUBLE类型或DECIMAL类型的对数值。
- 如果任一输入参数为NULL,则返回NULL。
- 如果任一输入参数为负数或0,则返回报错。
- 如果base为1(会引发一个除零行为),也会返回报错。
- 示例
--返回4.0。 select log(2, 16);
POW
- 命令格式
double pow(double <x>, double <y>) decimal pow(decimal <x>, decimal <y>)
- 命令说明
计算x的y次方,即
x^y
。 - 参数说明
- x:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回报错。
- y:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回报错。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。如果任一输入参数为NULL,则返回NULL。
- 示例
--返回65536.0。 select pow(2, 16);
RAND
- 命令格式
double rand(bigint <seed>)
- 命令说明
返回DOUBLE类型的随机数,返回值区间是0~1。
- 参数说明
seed:可选。BIGINT类型。随机数种子,决定随机数序列的起始值。
说明 您可以通过seed确定随机数序列,seed确定后,即可固定该函数的返回结果。 - 返回值说明
返回DOUBLE类型。
- 示例
--返回4.7147460303803655E-4。 select rand(); --返回0.7308781907032909。 select rand(1);
ROUND
- 命令格式
double round(double <number>[, bigint <decimal_places>]) decimal round(decimal <number>[, bigint <decimal_places>])
- 命令说明
四舍五入到指定小数点位置。
- 参数说明
- number:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入是其他类型则返回报错。
- decimal_places:可选。BIGINT类型常量,四舍五入计算到小数点后的位置,其他类型参数会返回报错。如果省略表示四舍五入到个位数,默认值为0。
说明 decimal_places可以是负数。负数会从小数点向左开始计数,并且不保留小数部分。如果decimal_places超过了整数部分长度,返回0。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。如果任一输入参数为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);
SIN
- 命令格式
double sin(double <number>) decimal sin(decimal <number>)
- 命令说明
计算number的正弦函数,输入为弧度值。
- 参数说明
number:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入其他类型则返回报错。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。
- 示例
--返回-0.3048106211022167。 select sin(60);
SINH
- 命令格式
double sinh(double <number>) decimal sinh(decimal <number>)
- 命令说明
计算number的双曲正弦函数。
- 参数说明
number:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入其他类型则返回报错。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。
- 示例
--返回5.343237290762231E12。 select sinh(30);
SQRT
- 命令格式
double sqrt(double <number>) decimal sqrt(decimal <number>)
- 命令说明
计算number的平方根。
- 参数说明
number:必填。DOUBLE类型或DECIMAL类型,必须大于0,小于0时返回异常。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入其他类型则返回报错。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。
- 示例
--返回2.0。 select sqrt(4);
TAN
- 命令格式
double tan(double <number>) decimal tan(decimal <number>)
- 命令说明
计算number的正切函数,输入为弧度值。
- 参数说明
number:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入其他类型则返回报错。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。
- 示例
--返回-6.405331196646276。 select tan(30);
TANH
- 命令格式
double tanh(double <number>) decimal tanh(decimal <number>)
- 命令说明
计算number的双曲正切函数。
- 参数说明
number:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入其他类型则返回报错。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。
- 示例
--返回1.0。 select tanh(30);
TRUNC
- 命令格式
double trunc(double <number>[, bigint <decimal_places>]) decimal trunc(decimal <number>[, bigint <decimal_places>])
- 命令说明
将输入值number截取到指定小数点位置。
- 参数说明
- number:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入其他类型则返回报错。
- decimal_places:可选。BIGINT类型常量,要截取到的小数点位置。其他类型参数会隐式转为BIGINT,省略此参数时默认截取到个位数。
说明 decimal_places可以是负数,负数会从小数点向左开始截取,并且不保留小数部分。如果decimal_places超过了整数部分长度,则返回0。
- 返回值说明
返回值类型为DOUBLE或DECIMAL类型。如果任一输入参数为NULL,则返回NULL。
说明- 返回DOUBLE类型时,返回的结果显示可能不符合预期,例如
trunc(125.815,1)
,这个DOUBLE类型显示问题任何系统都存在。 - 截取掉的部分补0。
- 返回DOUBLE类型时,返回的结果显示可能不符合预期,例如
- 示例
--返回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);
MaxCompute 2.0扩展函数
BIN
- 命令格式
string bin(bigint <number>)
- 命令说明
返回number的二进制代码表示。
- 参数说明
number:必填。BIGINT类型。
- 返回值说明
返回STRING类型。如果输入参数为0,则返回0;如果输入参数为NULL,则返回NULL。
- 示例
--返回0。 select bin(0); --返回NULL。 select bin(null); --返回1100。 select bin(12);
CBRT
- 命令格式
double cbrt(double <number>)
- 命令说明
计算number的立方根。
- 参数说明
number:必填。DOUBLE类型数据。
- 返回值说明
返回DOUBLE类型。如果输入参数为NULL,则返回NULL。
- 示例
--返回2.0。 select cbrt(8); --返回NULL。 select cbrt(null);
DEGREES
- 命令格式
double degrees(double <number>) double degrees(decimal <number>)
- 命令说明
将弧度转换为角度。
- 参数说明
number:必填。DOUBLE或DECIMAL类型数据。
- 返回值说明
返回DOUBLE类型。如果输入参数为NULL,则返回NULL。
- 示例
--返回90.0。 select degrees(1.5707963267948966); --返回0.0。 select degrees(0); --返回NULL。 select degrees(null);
E
- 命令格式
double e()
- 命令说明
返回
e
的值。 - 返回值说明
返回DOUBLE类型。
- 示例
--返回2.718281828459045。 select e();
FACTORIAL
- 命令格式
bigint factorial(int <number>)
- 命令说明
返回number的阶乘。
- 参数说明
number:必填。INT类型数据,且在[0,20]之间。
- 返回值说明
返回BIGINT类型。如果输入参数为0,则返回1;如果输入参数为NULL或[0,20]之外的值,则返回NULL。
- 示例
--返回120。5!=5*4*3*2*1=120 select factorial(5);
FORMAT_NUMBER
- 命令格式
string format_number(float|double|decimal <expr1>, <expr2>)
- 命令说明
将数字转化为指定格式的字符串。
- 参数说明
- expr1:必填。需要格式化的数据。
- expr2:必填。需要转化的目标格式。可以为INT类型,指定需要保留小数位数。也可以为类似
#,###,###.##
格式描述。- 如果expr2>0,则四舍五入到小数点后指定位数。
- 如果expr2=0,则没有小数点或小数部分。
- 如果expr2<0,或者expr2>340,则返回报错。
- 返回值说明
返回STRING类型数据。
- 示例
--返回5.230。 select format_number(5.230134523424545456,3); --返回12,332.123。 select format_number(12332.123456, '#,###,###,###.###');
HEX
- 命令格式
string hex(bigint <number>) string hex(string <number>) string hex(binary <number>)
- 命令说明
将整数或字符串转换为十六进制格式。
- 参数说明
number:必填。如果number是BIGINT类型,那么返回number的十六进制表示。如果number是STRING类型,则返回该字符串的十六进制表示。
- 返回值说明
- 如果输入非0或非NULL参数,则返回STRING类型。
- 如果输入参数为0,则返回0。
- 如果输入参数为NULL,则返回报错。
- 示例
--返回0。 select hex(0); --返回616263。 select hex('abc'); --返回11。 select hex(17); --返回3137。 select hex('17'); --返回报错。 select hex(null);
LOG2
- 命令格式
double log2(double <number>) double log2(decimal <number>)
- 命令说明
返回以2为底,number的对数。
- 参数说明
number:必填。DOUBLE或DECIMAL类型。
- 返回值说明
返回DOUBLE类型。如果输入参数为0或NULL,则返回NULL。
- 示例
--返回NULL。 select log2(null); --返回NULL。 select log2(0); --返回3.0。 select log2(8);
LOG10
- 命令格式
double log10(double <number>) double log10(decimal <number>)
- 命令说明
返回以10为底,number的对数。
- 参数说明
number:必填。DOUBLE或DECIMAL类型。
- 返回值说明
返回DOUBLE类型。如果输入参数为0或NULL,则返回NULL。
- 示例
--返回NULL。 select log10(null); --返回NULL。 select log10(0); --返回0.9030899869919435。 select log10(8);
PI
- 命令格式
double pi()
- 命令说明
返回π的值。
- 返回值说明
返回DOUBLE类型。
- 示例
--返回3.141592653589793。 select pi();
RADIANS
- 命令格式
double radians(double <number>)
- 命令说明
将角度转换为弧度。
- 参数说明
number:必填。DOUBLE类型数据。
- 返回值说明
返回DOUBLE类型。如果输入参数为NULL,则返回NULL。
- 示例
--返回1.5707963267948966。 select radians(90); --返回0.0。 select radians(0); --返回NULL。 select radians(null);
SIGN
- 命令格式
double sign(double <number>) double sign(decimal <number>)
- 命令说明
获取输入参数的符号。
- 参数说明
number:必填。DOUBLE或DECIMAL类型数据。
- 返回值说明
返回DOUBLE类型。
- 如果输入参数为正数,则返回1.0。
- 如果输入参数为负数,则返回-1.0。
- 如果输入参数为0,则返回0.0。
- 如果输入参数为NULL,则返回NULL。
- 示例
--返回-1.0。 select sign(-2.5); --返回1.0。 select sign(2.5); --返回0.0。 select sign(0); --返回NULL。 select sign(null);
SHIFTLEFT
- 命令格式
int shiftleft(tinyint|smallint|int <number1>, int <number2>) bigint shiftleft(bigint <number1>, int <number2>)
- 命令说明
按位左移(<<)。
- 参数说明
- number1:必填。TINYINT、SMALLINT、INT或BIGINT整型数据。
- number2:必填。INT整型数据。
- 返回值说明
返回INT或BIGINT类型。
- 示例
--返回4。1的二进制左移2位(1<<2,0001左移两位是0100)。 select shiftleft(1,2); --返回32。4的二进制左移3位(4<<3,0100左移3位是100000)。 select shiftleft(4,3);
SHIFTRIGHT
- 命令格式
int shiftright(tinyint|smallint|int <number1>, int <number2>) bigint shiftright(bigint <number1>, int <number2>)
- 命令说明
按位右移(>>)。
- 参数说明
- number1:必填。TINYINT、SMALLINT、INT或BIGINT整型数据。
- number2:必填。INT整型数据。
- 返回值说明
返回INT或BIGINT类型。
- 示例
--返回1。4的二进制右移2位(4>>2,0100右移两位是0001)。 select shiftright(4,2); --返回4。32的二进制右移3位(32>>3,100000右移3位是0100)。 select shiftright(32,3);
SHIFTRIGHTUNSIGNED
- 命令格式
int shiftrightunsigned(tinyint|smallint|int <number1>, int <number2>) bigint shiftrightunsigned(bigint <number1>, int <number2>)
- 命令说明
无符号按位右移(>>>)。
- 参数说明
- number1:必填。TINYINT、SMALLINT、INT或BIGINT整型数据。
- number2:必填。INT整型数据。
- 返回值说明
返回INT或BIGINT类型。
- 示例
--返回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);
UNHEX
- 命令格式
binary unhex(string <number>)
- 命令说明
返回十六进制字符串所代表的字符串。
- 参数说明
number:必填。为十六进制字符串。
- 返回值说明
返回BINARY类型。如果输入参数为0,则返回报错;如果输入参数为NULL,则返回NULL。
- 示例
--返回abc。 select unhex('616263'); --返回abc。 select unhex(616263);
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数据类型版本。
- 参数说明
- expr:必填。需要判断分组编号的字段。
- min_value:必填。分组范围最小值。
- max_value:必填。分组范围最大值,最大值必须比最小值大。
- num_buckets:必填。分组个数,必须大于0。
- 返回值说明
返回值为BIGINT类型,范围为0到设定的分组个数+1。如果expr值小于min_value,返回0。如果expr大于max_value,返回设定的分组个数+1。如果字段值为NULL,分组编号返回值也为NULL。其他情况返回字段值落入的分组编号。字段值对应的分组编号取值规则为
floor( num_buckets * (expr - min_value)/(max_value - min_value) + 1)
。 - 示例
返回结果如下: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 | +-------+--------+-------------+
在文档使用中是否遇到以下问题
更多建议
匿名提交