全部产品
MaxCompute

数学函数

更新时间:2017-09-20 12:08:49   分享:   

ABS

函数定义:

  1. double abs(double number)
  2. bigint abs(bigint number)
  3. decimal abs(decimal number)

用途:返回绝对值。

参数说明:

  • number:Double或bigint类型或Decimal类型,输入为bigint时返回bigint,输入为double时返回double类型。输入decimal类型时返回decimal类型。若输入为string类型会隐式转换到double类型后参与运算,其它类型抛异常。

返回值:Double或者bigint类型或者decimal类型,取决于输入参数的类型。若输入为null,返回null。

备注:

  • 当输入bigint类型的值超过bigint的最大表示范围时,会返回double类型,这种情况下可能会损失精度。

示例:

  1. abs(null) = null
  2. abs(-1) = 1
  3. abs(-1.2) = 1.2
  4. abs("-2") = 2.0
  5. abs(122320837456298376592387456923748) = 1.2232083745629837e32

下面是一个完整的abs函数在SQL中使用的例子,其他内建函数(除窗口函数、聚合函数外)的使用方式与其类似,不再一一举例:

  1. select abs(id) from tbl1;
  2. -- tbl1表内id字段的绝对值

ACOS

函数定义:

  1. double acos(double number)
  2. decimal acos(decimal number)

用途:计算number的反余弦函数。

参数说明:

  • number:Double类型或Decimal类型,-1≤number≤1。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。

返回值:Double类型或Decimal类型,值域在0 ~ π 之间。若number为NULL,返回NULL。

示例:

  1. acos("0.87") = 0.5155940062460905
  2. acos(0) = 1.5707963267948966

ASIN

函数定义:

  1. double asin(double number)
  2. decimal asin(DECIMAL number)

用途:反正弦函数。

参数说明:

  • number:Double类型或Decimal类型,-1≤number≤1。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。

返回值:Double类型或Decimal类型,值域在-π/2 ~π/2之间。若number为NULL,返回NULL。

示例:

  1. asin(1) = 1.5707963267948966
  2. asin(-1) = -1.5707963267948966

ATAN

函数定义:

  1. double atan(double number)

用途:反正切函数。

参数说明:

  • number:Double类型,若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。

返回值:Double类型,值域在-π/2 ~π/2之间。若number为NULL,返回NULL。

示例:

  1. atan(1) = 0.7853981633974483
  2. atan(-1) = -0.7853981633974483

CEIL

函数定义:

  1. bigint ceil(double value)
  2. bigint ceil(decimal value)

用途:返回不小于输入值value的最小整数

参数说明:

  • value:Double类型或Decimal类型,若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。

返回值:Bigint类型。任一输入为NULL,返回NULL。

示例:

  1. ceil(1.1) = 2
  2. ceil(-1.1) = -1

CONV

函数定义:

  1. 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位精度工作,溢出时报异常。输入如果是负值,即以”-“开头,报异常。如果输入的是小数,则会转为整数值后进行进制转换,小数部分会被舍弃。

示例

  1. conv('1100', 2, 10) = '12'
  2. conv('1100', 2, 16) = 'c'
  3. conv('ab', 16, 10) = '171'
  4. conv('ab', 16, 16) = 'ab'

COS

函数定义:

  1. double cos(double number)
  2. decimal cos(decimal number)

用途:余弦函数,输入为弧度值。

参数说明:

  • number:Double类型或Decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。

返回值:Double类型或Decimal类型。若number为NULL,返回NULL。

示例:

  1. cos(3.1415926/2)=2.6794896585028633e-8
  2. cos(3.1415926)=0.9999999999999986

COSH

函数定义:

  1. double cosh(double number)
  2. decimal cosh(decimal number)

用途:双曲余弦函数。

参数说明:

  • number:Double类型或Decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。返回值:Double类型或Decimal类型。若number为NULL,返回NULL。

COT

函数定义:

  1. double cot(double number)
  2. decimal cot(decimal number)

用途:余切函数,输入为弧度值。

参数说明:

  • number:Double类型或Decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。返回值:Double类型或Decimal类型。若number为NULL,返回NULL。

EXP

函数定义:

  1. double exp(double number)
  2. decimal exp(decimal number)

用途:指数函数。返回number的指数值。

参数说明:

  • number:Double类型或Decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。返回值:Double类型或Decimal类型。若number为NULL,返回NULL。

FLOOR

函数定义:

  1. bigint floor(double number)
  2. bigint floor(decimal number)

用途:向下取整,返回比number小的整数值。

参数说明:

  • number:Double类型或Decimal类型,若输入为string类型或bigint型会隐式转换到double类型后参与运算,其他类型抛异常返回值:返回Bigint类型。若number为NULL,返回NULL。

示例

  1. floor(1.2)=1
  2. floor(1.9)=1
  3. floor(0.1)=0
  4. floor(-1.2)=-2
  5. floor(-0.1)=-1
  6. floor(0.0)=0
  7. floor(-0.0)=0

LN

函数定义:

  1. double ln(double number)
  2. decimal ln(decimal number)

用途:返回number的自然对数。

参数说明:

  • number:Double类型或Decimal类型,若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。若number为NULL返回NULL,若number为负数或零,则抛异常。返回值:Double类型或Decimal类型。

LOG

函数定义:

  1. double log(double base, double x)
  2. decimal log(decimal base, DECIMAL x)

用途:返回以base为底的x的对数。

参数说明:

  • base:Double类型或Decimal类型,若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。
  • x:Double类型或Decimal类型,若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。返回值:Double类型或Decimal类型的对数值,若base和x中存在NULL,则返回NULL;若base和x中某一个值为负数或0,会引发异常;若base为1(会引发一个除零行为)也会引发异常。

POW

函数定义:

  1. double pow(double x, double y)
  2. decimal pow(decimal x, DECIMAL y)

用途:返回x的y次方,即x^y。

参数说明:

  • X:Double类型或Decimal类型,若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。
  • Y:Double类型或Decimal类型,若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。返回值:Double类型或Decimal类型。若x或y为NULL,则返回NULL

RAND

函数定义:

  1. double rand(bigint seed)

用途:以seed为种子返回double类型的随机数,返回值区间是的0~1。

参数说明:

  • seed:可选参数,Bigint类型,随机数种子,决定随机数序列的起始值。

返回值:Double类型。

示例:

  1. select rand() from dual;
  2. select rand(1) from dual;

ROUND

函数定义:

  1. double round(double number, [bigint decimal_places])
  2. decimal round(decimal number, [bigint decimal_places])

用途:四舍五入到指定小数点位置。

参数说明:

  • number:Double类型或Decimal类型,若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。
  • decimal_place:Bigint类型常量,四舍五入计算到小数点后的位置,其他类型参数会引发异常. 如果省略表示四舍五入到个位数。默认值为0。返回值:返回Double类型或Decimal类型。若number或decimal_places为NULL,返回NULL。

备注:

  • decimal_places可以是负数。负数会从小数点向左开始计数,并且不保留小数部分;如果decimal_places超过了整数部分长度,返回0.示例:
  1. round(125.315) = 125.0
  2. round(125.315, 0) = 125.0
  3. round(125.315, 1) = 125.3
  4. round(125.315, 2) = 125.32
  5. round(125.315, 3) = 125.315
  6. round(-125.315, 2) = -125.32
  7. round(123.345, -2) = 100.0
  8. round(null) = null
  9. round(123.345, 4) = 123.345
  10. round(123.345, -4) = 0.0

SIN

函数定义:

  1. double sin(double number)
  2. decimal sin(decimal number)

用途:正弦函数,输入为弧度值。

参数说明:

  • number:Double类型或Decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。返回值:Double类型或Decimal类型。若number为NULL,返回NULL。

SINH

函数定义:

  1. double sinh(double number)
  2. decimal sinh(decimal number)

用途:双曲正弦函数。

参数说明:

  • number:Double类型或Decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。返回值:Double类型或Decimal类型。若number为NULL,返回NULL。

SQRT

函数定义:

  1. double sqrt(double number)
  2. decimal sqrt(decimal number)

用途:计算平方根。

参数说明:

  • number:Double类型或Decimal类型,必须大于0。小于0时引发异常。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。返回值:返回double类型或Decimal类型。若number为NULL,返回NULL。

TAN

函数声明:

  1. double tan(double number)
  2. decimal tan(decimal number)

用途:正切函数,输入为弧度值。

参数说明:

  • number:Double类型或Decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。返回值:Double类型或Decimal类型。若number为NULL,返回NULL。

TANH

函数声明:

  1. double tanh(double number)
  2. decimal tanh(decimal number)

用途:双曲正切函数。

参数说明:

  • number:Double类型或Decimal类型。若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。返回值:Double类型或Decimal类型。若number为NULL,返回NULL。

TRUNC

函数声明:

  1. double trunc(double number[, bigint decimal_places])
  2. decimal trunc(decimal number[, bigint decimal_places])

用途:将输入值number截取到指定小数点位置。

参数说明:

  • number:Double类型或Decimal类型,若输入为string类型或bigint类型会隐式转换到double类型后参与运算,其他类型抛异常。
  • decimal_places:Bigint类型常量,要截取到的小数点位置,其他类型参数会隐式转为bigint,省略此参数时默认到截取到个位数。返回值:返回值类型为Double或Decimal类型。若number或decimal_places为NULL,返回NULL。

备注:

  • 截取掉的部分补0。
  • decimal_places可以是负数,负数会从小数点向左开始截取,并且不保留小数部分;如果decimal_places超过了整数部分长度,返回0。

示例:

  1. trunc(125.815) = 125.0
  2. trunc(125.815, 0) =125.0
  3. trunc(125.815, 1) = 125.8
  4. trunc(125.815, 2) = 125.81
  5. trunc(125.815, 3) = 125.815
  6. trunc(-125.815, 2) = -125.81
  7. trunc(125.815, -1) = 120.0
  8. trunc(125.815, -2) = 100.0
  9. trunc(125.815, -3) = 0.0
  10. trunc(123.345, 4) = 123.345
  11. trunc(123.345, -4) = 0.0

新扩展数学函数

升级到MaxCompute2.0后,产品扩展部分数学函数,新函数若用到新数据类型时,在使用新函数的sql前,需要加一个set语句:

  1. set odps.sql.type.system.odps2=true;

具体新扩展的函数如下介绍。

LOG2

函数定义:

  1. Double log2(DOUBLE number)
  2. Double log2(DECIMAL number)

用途:以2为底返回number的对数。

参数说明:

  • number:Double或Decimal类型。

返回值:Double类型。若输入为0或null,返回null;

示例:

  1. log2(null)=null
  2. log2(0)=null
  3. log2(8)=3.0

LOG10

函数定义:

  1. DOUBLE log10(DOUBLE number)
  2. Double log10(DECIMAL number)

用途:以10为底返回number的对数。

参数说明:

  • number:Double或Decimal类型。

返回值:Double类型。若输入为0或null,返回null;

示例:

  1. log10(null)=null
  2. log10(0)=null
  3. log10(8)=0.9030899869919435

BIN

函数定义:

  1. string bin(BIGINT number)

用途:返回number的二进制代码表示。

参数说明:

  • number:BIGINT类型。

返回值:string类型。若输入为0返回0,输入null,返回null。

示例:

  1. bin(0)='0'
  2. bin(null)='null'
  3. bin(12)='1100'

HEX

函数定义:

  1. STRING hex(BIGINT number)
  2. STRING hex(STRING number)
  3. STRING hex(BINARY number)

用途:将整数或字符转换为十六进制格式

参数说明:

  • number:如果number是BIGINT类型,那么返回number的十六进制表示;如果变量是string类型,则返回该字符串的十六进制表示。

返回值:返回STRING类型。若输入为0返回0,输入null,返回异常。

示例:

  1. hex(0)=0
  2. hex('abc')='616263'
  3. hex(17)='11'
  4. hex('17')='3137'
  5. hex(null)异常返回失败

UNHEX

函数定义:

  1. BINARY unhex(STRING number)

用途:返回十六进制字符串所代表的字符串。

参数说明:

  • number:为十六进制字符串。

返回值:返回BINARY类型,若输入0则返回失败,若为null返回null。

示例:

  1. unhex('616263')='abc'
  2. unhex(616263)='abc'

RADIANS

函数定义:

  1. DOUBLE radians(DOUBLE number)

用途: 将角度转换为弧度。

参数说明:

  • number:DOUBLE类型数据。

返回值:返回DOUBLE类型,若输入null返回null。

示例:

  1. radians(90)=1.5707963267948966
  2. radians(0)=0.0
  3. radians(null)=null

DEGREES

函数定义:

  1. DOUBLE degrees(DOUBLE number)
  2. DOUBLE degrees(DECIMAL number)

用途: 将弧度转换为角度。

参数说明:

  • number:DOUBLE或DECIMAL类型数据。

返回值:返回DOUBLE类型,若输入null,则返回null。

示例:

  1. degrees(1.5707963267948966)=90.0
  2. degrees(0)=0.0
  3. degrees(null)=null

SIGN

函数定义:

  1. DOUBLE sign(DOUBLE number)
  2. DOUBLE sign(DECIMAL number)

用途:取输入数据的符号,’1.0’表示正,’-1.0’表示负,否则’0.0’。

参数说明:

  • number:DOUBLE或DECIMAL类型数据。

返回值:返回DOUBLE类型,若输入0则返回0.0,输入null则返回null。

示例:

  1. sign(-2.5)=-1.0
  2. sign(2.5)=1.0
  3. sign(0)=0.0
  4. sign(null)=null

E

函数定义:

  1. DOUBLE e()

用途:返回e的值。

返回值:返回DOUBLE类型。

示例:

  1. e()=2.718281828459045

PI

函数定义:

  1. DOUBLE pi()

用途:返回π的值

返回值:返回DOUBLE类型。

示例:

  1. pi()=3.141592653589793

FACTORIAL

函数定义:

  1. BIGINT factorial(INT number)

用途:返回number的阶乘。

参数说明:

  • number:int类型数据,且在[0..20]之间。

返回值:返回BIGINT类型,输入0则返回1,输入null或[0..20]之外的返回null。

示例:

  1. factorial(5)=120 --5!= 5*4*3*2*1=120

CBRT

函数定义:

  1. DOUBLE cbrt(DOUBLE number)

用途:返回立方根。

参数说明:

  • number:DOUBLE类型数据。

返回值:返回DOUBLE类型,输入null返回null。

示例:

  1. cbrt(8)=2
  2. cbrt(null)=null

SHIFTLEFT

函数定义:

  1. INT shiftleft(TINYINT|SMALLINT|INT number1, INT number2)
  2. BIGINT shiftleft(BIGINT number1, INT number2)

用途:按位左移(<<)。

参数说明:

  • number1:TINYINT|SMALLINT|INT|BIGINT整形数据。
  • number2:INT整形数据。

返回值:返回INT或BIGINT类型。

示例:

  1. shiftleft(1,2)=4 --1的二进制左移2位(1<<2,0001左移两位是0100
  2. shiftleft(4,3)=32--4的二进制左移3位(4<<3,0100左移3位是100000

SHIFTRIGHT

函数定义:

  1. INT shiftright(TINYINT|SMALLINT|INT number1, INT number2)
  2. BIGINT shiftright(BIGINT number1, INT number2)

用途:按位右移(>>)。

参数说明:

  • number1:TINYINT|SMALLINT|INT|BIGINT整形数据。
  • number2:INT整形数据。

返回值:返回INT或BIGINT类型。

示例:

  1. shiftright(4,2)=1 -- 4的二进制右移2位(4>>2,0100右移两位是0001
  2. shiftright(32,3)=4 -- 32的二进制右移3位(32>>3,100000右移3位是0100

SHIFTRIGHTUNSIGNED

函数定义:

  1. INT shiftrightunsigned(TINYINT|SMALLINT|INT number1, INT number2)
  2. BIGINT shiftrightunsigned(BIGINT number1, INT number2)

用途:无符号按位右移(>>>)。

参数说明:

  • number1:TINYINT|SMALLINT|INT|BIGINT整形数据。
  • number2:INT整形数据。

返回值:返回INT或BIGINT类型。

示例:

  1. shiftrightunsigned(8,2)=2 --8的二进制无符号右移2位(8>>>2,1000右移两位是0010)
  2. shiftrightunsigned(-14,2)=1073741820-- -14的二进制右移2位(-14>>>2, 11111111 11111111 11111111 11110010右移2位是 00111111 11111111 11111111 11111100)
本文导读目录
本文导读目录
以上内容是否对您有帮助?