数值函数
数值函数用于对数值型数据进行各种运算。本文介绍云原生数据仓库 AnalyticDB MySQL 版数值函数的详细用法与示例。
ABS:返回参数的绝对值。
ACOS:返回参数的反余弦值。
ASIN:返回参数的反正弦值。
ATAN:返回参数的反正切值。
ATAN2:返回参数x除以参数y之后的反正切值。
CEILING或CEIL:返回大于等于参数x,且最接近x的整数值。
COS:返回参数的余弦值。
COT:返回参数的余切值。
CRC32:返回参数的循环冗余码。
DEGREES:弧度转换为角度。
EXP:返回以e为底、x为幂的值。
FLOOR:返回小于等于参数x,且最接近x的整数值。
LN:返回参数的自然对数。
LOG:对数函数。
LOG2:返回以2为底的对数。
LOG10:返回以10为底的对数。
PI:返回圆周率pi的值。
POWER/POW:返回x的y次幂。
RADIANS:角度转换为弧度。
RAND返回目标数字范围内的一个随机数。
ROUND:返回参数四舍五入后的值。
SIGN:返回参数的符号的值。
SIN:返回参数的正弦值。
SQRT:返回参数的平方根。
TAN:返回参数的正切值。
ABS
abs(x)
命令说明:返回参数
x
的绝对值。输入值类型:TINYINT、SMALLINT、INT、BIGINT、DOUBLE、FLOAT或DECIMAL。
返回值类型:
当输入值类型为TINYINT、SMALLINT、INT或BIGINT时,返回值类型为BIGINT。
当输入值类型为DOUBLE或FLOAT时,返回值类型为DOUBLE。
当输入值类型为DECIMAL时,返回值类型为DECIMAL。
示例:
SELECT abs(4.5);
返回结果如下:
+----------+ | abs(4.5) | +----------+ | 4.5 | +----------+
SELECT abs(-4);
返回结果如下:
+--------+ | abs(4) | +--------+ | 4 | +--------+
ACOS
acos(x)
命令说明:返回参数
x
的反余弦值。如果
x>1
或者x<-1
,返回结果为NULL
。输入值类型:DOUBLE。
返回值类型:DOUBLE。
示例:
SELECT acos(0.5);
返回结果如下:
+--------------------+ | acos(0.5) | +--------------------+ | 1.0471975511965979 | +--------------------+
ASIN
asin(x)
命令说明:返回参数
x
的反正弦值。如果
x>1
或者x<-1
,返回结果为NULL
。输入值类型:DOUBLE。
返回值类型:DOUBLE。
示例:
SELECT asin(0.5);
返回结果如下:
+--------------------+ | asin(0.5) | +--------------------+ | 0.5235987755982989 | +--------------------+
ATAN
atan(x)
命令说明:返回参数
x
的反正切值。输入值类型:DOUBLE。
返回值类型:DOUBLE。
示例:
SELECT atan(0.5);
返回结果如下:
+--------------------+ | atan(0.5) | +--------------------+ | 0.4636476090008061 | +--------------------+
ATAN2
atan2(x, y)
命令说明:返回参数
x
除以参数y
之后的反正切值。输入值类型:DOUBLE。
返回值类型:DOUBLE。
示例:
SELECT atan2(0.5,0.3);
返回结果如下:
+--------------------+ | atan2(0.5,0.3) | +--------------------+ | 1.0303768265243125 | +--------------------+
CEILING或CEIL
ceiling(x)
ceil(x)
命令说明:返回大于或等于
x
,且最接近x
的整数。输入值类型:TINYINT、SMALLINT、INT、BIGINT、DOUBLE、FLOAT或DECIMAL。
返回值类型:
当输入值类型为TINYINT、SMALLINT、INT或BIGINT时,返回值类型为BIGINT。
当输入值类型为DOUBLE或FLOAT时,返回值类型为DOUBLE。
当输入值类型为DECIMAL时,返回值类型为DECIMAL。
示例:
SELECT ceiling(4);
返回结果如下:
+------------+ | ceiling(4) | +------------+ | 4 | +------------+
SELECT ceil(-4.5);
返回结果如下:
+------------+ | ceil(-4.5) | +------------+ | -4 | +------------+
COS
cos(x)
命令说明:返回
x
的余弦值。输入值类型:DOUBLE。
返回值类型:DOUBLE。
示例:
SELECT cos(1.3);
返回结果如下:
+---------------------+ | cos(1.3) | +---------------------+ | 0.26749882862458735 | +---------------------+
COT
cot(x)
命令说明:返回参数
x
的余切值。输入值类型:DOUBLE。
返回值类型:DOUBLE。
示例:
SELECT cot(1.234);
返回结果如下:
+---------------------+ | cot(1.234) | +---------------------+ | 0.35013639786701445 | +---------------------+
CRC32
crc32(x)
命令说明:返回参数
x
的循环冗余码。输入值类型:VARBINARY。
返回值类型:BIGINT。
示例:
SELECT crc32('中国');
返回结果如下:
+-----------------+ | crc32('中国') | +-----------------+ | 737014929 | +-----------------+
DEGREES
degrees(x)
命令说明:弧度转换为角度。
输入值类型:DOUBLE。
返回值类型:DOUBLE。
示例:
SELECT degrees(1.3);
返回结果如下:
+-------------------+ | degrees(1.3) | +-------------------+ | 74.48451336700703 | +-------------------+
EXP
exp(x)
命令说明:返回以
e
为底,x
为幂的值。输入值类型:DOUBLE。
返回值类型:DOUBLE。
示例:
SELECT exp(4.5);
返回结果如下:
+-------------------+ | exp(4.5) | +-------------------+ | 90.01713130052181 | +-------------------+
FLOOR
floor(x)
命令说明:返回小于或等于
x
,且最接近x
的整数。输入值类型:TINYINT、SMALLINT、INT、BIGINT、DOUBLE、FLOAT或DECIMAL。
返回值类型:
当输入值类型为TINYINT、SMALLINT、INT或BIGINT时,返回值类型为BIGINT。
当输入值类型为DOUBLE或FLOAT时,返回值类型为DOUBLE。
当输入值类型为DECIMAL时,返回值类型为DECIMAL。
示例:
SELECT floor(7);
返回结果如下:
+----------+ | floor(7) | +----------+ | 7 | +----------+
SELECT floor(0.8);
说明AnalyticDB for MySQL会将0.8处理成DECIMAL类型的值。当输入值类型为DECIMAL时,返回值类型为DECIMAL。
返回结果如下:
+-------------+ | floor(0.8) | +-------------+ | 0 | +-------------+
SELECT floor(4/5);
说明AnalyticDB for MySQL会将4/5处理成DOUBLE类型的值。当输入值类型为DOUBLE时,返回值类型为DOUBLE。您可以使用CAST函数,将floor(4/5)=0.0转换成INTEGER或BIGINT,详情请参见CAST AS BIGINT。
返回结果如下:
+-------------+ | floor(4/5) | +-------------+ | 0.0 | +-------------+
LN
ln(x)
命令说明:返回
x
的自然对数。输入值类型:DOUBLE。
返回值类型:DOUBLE。
示例:
SELECT ln(2.718281828459045);
返回结果如下:
+-----------------------+ | ln(2.718281828459045) | +-----------------------+ | 1.0 | +-----------------------+
LOG
log(x)
log(x, y)
命令说明:
输入一个参数时,返回
x
的自然对数。输入两个参数时,返回以
x
为底的y
的对数。
输入值类型:DOUBLE。
返回值类型:DOUBLE。
示例:
SELECT log(16);
返回结果如下:
+-------------------+ | log(16) | +-------------------+ | 2.772588722239781 | +-------------------+
SELECT log(10,100);
返回结果如下:
+-------------+ | log(10,100) | +-------------+ | 2.0 | +-------------+
LOG2
log2(x)
命令说明:返回以2为底的对数。
输入值类型:DOUBLE。
返回值类型:DOUBLE。
示例:
SELECT log2(8.7654);
返回结果如下:
+-------------------+ | log2(8.7654) | +-------------------+ | 3.131819928389146 | +-------------------+
LOG10
log10(x)
命令说明:返回以10位底的对数。
输入值类型:DOUBLE。
返回值类型:DOUBLE。
示例:
SELECT log10(100.876);
返回结果如下:
+--------------------+ | log10(100.876) | +--------------------+ | 2.0037878529824615 | +--------------------+
PI
pi()
命令说明:返回圆周率pi的值。
返回值类型:DOUBLE。
示例:
SELECT pi();
返回结果如下:
+-------------------+ | pi() | +-------------------+ | 3.141592653589793 | +-------------------+
POWER/POW
power(x, y)
pow(x, y)
命令说明:返回
x
的y
次幂。输入值类型:DOUBLE。
返回值类型:DOUBLE。
示例:
SELECT power(1.2,3.4);
返回结果如下:
+-------------------+ | power(1.2,3.4) | +-------------------+ | 1.858729691979481 | +-------------------+
SELECT pow(-2,-3);
返回结果如下:
+------------+ | pow(-2,-3) | +------------+ | -0.125 | +------------+
RADIANS
radians(x)
命令说明:角度转换为弧度。
输入值类型:DOUBLE。
返回值类型:DOUBLE。
示例:
SELECT radians(60.0);
返回结果如下:
+--------------------+ | radians(60.0) | +--------------------+ | 1.0471975511965976 | +--------------------+
RAND
rand()
rand()*(y-x)+x
命令说明:随机函数
rand()
不支持设置入参,会随机返回0到1之间(包含0但不包含1)的一个数。您也可以使用
rand()*(y-x)+x
函数,随机返回x
到y
之间(包含x
但不包含y
)的一个数。返回值类型:DOUBLE。
示例:
SELECT rand();
返回结果如下:
+--------------------+ | rand() | +--------------------+ | 0.6613712594764614 | +--------------------+
随机返回3到12之间的一个浮点数。
SELECT rand()*(12-3)+3;
返回结果如下:
+-------------------+ | rand()*(12-3)+3 | +-------------------+ | 9.073329270781976 | +-------------------+
ROUND
round(x)
round(x,d)
命令说明:将参数
x
四舍五入,d
是要保留的精度,默认d
为0
,舍入算法取决于x
的数据类型。如果
x
为null
,返回结果为NULL
。如果
d>0
,则四舍五入到指定的小数位。如果
d=0
,则四舍五入到最接近的整数。如果
d<0
,则四舍五入到小数点左侧的指定位数。
输入值类型:TINYINT、SMALLINT、INT、BIGINT、DOUBLE、FLOAT或DECIMAL。
返回值类型:
当输入值类型为TINYINT、SMALLINT、INT或BIGINT时,返回值类型为BIGINT。
当输入值类型为DOUBLE或FLOAT时,返回值类型为DOUBLE。
当输入值类型为DECIMAL时,返回值类型为DECIMAL。
示例:
将345.983四舍五入到最近的整数。
SELECT round(345.983,0);
返回结果如下:
+------------------+ | round(345.983,0) | +------------------+ | 346.000 | +------------------+
将345.123四舍五入到小数点后一位。
SELECT round(345.123,1);
返回结果如下:
+------------------+ | round(345.123,1) | +------------------+ | 345.100 | +------------------+
将345.984四舍五入到小数点前一位。
SELECT round(344.984,-1);
返回结果如下:
+-------------------+ | round(344.984,-1) | +-------------------+ | 340.000 | +-------------------+
将345.984四舍五入到小数点前4位。
SELECT round(345.984,-4);
返回结果如下:
+-------------------+ | round(345.984,-4) | +-------------------+ | 0.000 | +-------------------+
SIGN
sign(x)
命令说明:根据参数
x
的符号返回对应的数值:如果
x>0
,则返回1。如果
x=0
,则返回0。如果
x<0
,则返回-1。
输入值类型:TINYINT、SMALLINT、INT、BIGINT、DOUBLE、FLOAT或DECIMAL。
返回值类型:BIGINT。
示例:
SELECT sign(12);
返回结果如下:
+----------+ | sign(12) | +----------+ | 1 | +----------+
SELECT sign(-4.5);
返回结果如下:
+------------+ | sign(-4.5) | +------------+ | -1 | +------------+
SIN
sin(x)
命令说明:返回参数
x
的正弦值。输入值类型:DOUBLE。
返回值类型:DOUBLE。
示例:
SELECT sin(1.234);
返回结果如下:
+--------------------+ | sin(1.234) | +--------------------+ | 0.9438182093746337 | +--------------------+
SQRT
sqrt(x)
命令说明:返回参数
x
的平方根。输入值类型:DOUBLE。
返回值类型:DOUBLE。
示例:
SELECT sqrt(4.222);
返回结果如下:
+-------------------+ | sqrt(4.222) | +-------------------+ | 2.054750593137766 | +-------------------+
TAN
tan(x)
命令说明:返回参数
x
的正切值。输入值类型:DOUBLE。
返回值类型:DOUBLE。
示例:
SELECT tan(8);
返回结果如下:
+--------------------+ | tan(8) | +--------------------+ | -6.799711455220379 | +--------------------+