1 基本函数
ABS(x)
返回x的绝对值
SIGN(X)
返回X的符号。正数返回1,负数返回-1,0返回0
PI()
返回圆周率的值
CEIL(x),CEILING(x)
返回大于或等于某个值的最小整数
天花板函数,向上取整。
FLOOR(x)
返回小于或等于某个值的最大整数
地板函数,向下取整。
LEAST(e1,e2,e3…)
返回列表中的最小值
GREATEST(e1,e2,e3…)
返回列表中的最大值
MOD(x,y)
返回X除以Y后的余数
RAND()
返回0~1的随机值
RAND(x)
返回0~1的随机值,其中x的值用作种子值,相同的X值会产生相同的随机数
ROUND(x)
返回一个对x的值进行四舍五入后,最接近于X的整数
ROUND(x,y)
返回一个对x的值进行四舍五入后最接近X的值,并保留到小数点后面Y位
TRUNCATE(x,y)
返回数字x截断为y位小数的结果
截断后剩余的小数位数必须指定(y必须指定)。
SQRT(x)
返回x的平方根。当X的值为负数时,返回NULL
代码示例
SELECT ABS(-123), ABS(32), SIGN(-23), SIGN(43), PI(), CEIL(32.32), CEILING(-43.23), FLOOR(32.32), FLOOR(-43.23), MOD(12,5), RAND(), RAND(), RAND(10), RAND(10), RAND(-1), RAND(-1), ROUND(12.33), ROUND(12.343,2), ROUND(12.324,-1), TRUNCATE(12.66,1), TRUNCATE(12.66,-1) FROM DUAL;
单行函数的嵌套:
SELECT truncate(round(123.456, 2), 1) FROM dual;
先四舍五入保留两位小数后为123.46,然后截断保留一位小数后为123.4。
2 角度与弧度互换函数
RADIANS(x)
将角度转化为弧度,其中,参数x为角度值
DEGREES(x)
将弧度转化为角度,其中,参数x为弧度值
代码示例
SELECT RADIANS(30), RADIANS(60), RADIANS(90), DEGREES(2*PI()), DEGREES(RADIANS(90)) FROM DUAL;
3 三角函数
SIN(x)
返回x的正弦值,其中,参数x为弧度值
ASIN(x)
返回x的反正弦值,即获取正弦为x的值。如果x的值不在-1到1之间,则返回NULL
COS(x)
返回x的余弦值,其中,参数x为弧度值
ACOS(x)
返回x的反余弦值,即获取余弦为x的值。如果x的值不在-1到1之间,则返回NULL
TAN(x)
返回x的正切值,其中,参数x为弧度值
ATAN(x)
返回x的反正切值,即返回正切值为x的值
ATAN2(m,n)
返回两个参数的反正切值
COT(x)
返回x的余切值,其中,X为弧度值
代码示例
SELECT SIN(RADIANS(30)), DEGREES(ASIN(1)), TAN(RADIANS(45)), DEGREES(ATAN(1)), DEGREES(ATAN2(1,1) ) FROM DUAL;
ATAN2(M,N)函数返回两个参数的反正切值。 与ATAN(X)函数相比,ATAN2(M,N)需要两个参数,例如有两个点point(x1,y1)和point(x2,y2),使用ATAN(X)函数计算反正切值为ATAN((y2-y1)/(x2-x1)),使用ATAN2(M,N)计算反正切值则为ATAN2(y2-y1,x2-x1)。由使用方式可以看出,当x2-x1等于0时,ATAN(X)函数会报错,而ATAN2(M,N)函数则仍然可以计算。
(y2-y1)/(x2-x1) 计算出来的为两个点间的正切值。
4 指数与对数
POW(x,y),POWER(X,Y)
返回x的y次方
EXP(X)
返回e的X次方,其中e是一个常数,2.718281828459045
LN(X),LOG(X)
返回以e为底的X的对数,当X <= 0 时,返回的结果为NULL
LOG10(X)
返回以10为底的X的对数,当X <= 0 时,返回的结果为NULL
LOG2(X)
返回以2为底的X的对数,当X <= 0 时,返回NULL
代码示例
SELECT POW(2,5), POWER(2,4), EXP(2), LN(10), LOG10(10), LOG2(4) FROM DUAL;
5 进制间的转换
BIN(x)
返回x的二进制编码
HEX(x)
返回x的十六进制编码
OCT(x)
返回x的八进制编码
CONV(x,f1,f2)
返回f1进制数的x变成f2进制数
代码示例
SELECT BIN(10), HEX(10), OCT(10), CONV(10,2,8) FROM DUAL;