MySQL函数学习(二)-----数值型函数
注:笔记旨在记录
二、MySQL 数值型函数
| \ | 函 数 名 称 | 作 用 | 完 成 |
|---|---|---|---|
| 1 | RAND |
取随机数,可设置参数种子 | 勾 |
| 2 | ABS |
求x的绝对值 | 勾 |
| 3 | SIGN |
求x的正负符号 | 勾 |
| 4 | SQRT |
求X的平方根 | 勾 |
| 5 | POW |
求x的y次方 | 勾 |
| 6 | MOD |
取余,求N除以M的模 | 勾 |
| 7 | LOG |
求以B为底X的对数 | 勾 |
| 8 | CEIL,FLOOR |
向上,向下取整 | 勾 |
| 9 | ROUND |
对X的第D位四舍五入 | 勾 |
| 10 | TRUNCATE |
保留X小数点后D位 | 勾 |
| 11 | PI |
取π的值 | 勾 |
| 12 | DEGREES,RADIANS |
弧度,角度间的转换 | 勾 |
| 13 | SIN,COS,TAN |
正弦,余弦,正切 | 勾 |
| 14 | ASIN,ACOS,ATAN,COT |
反正弦,反余弦,反正切 | 勾 |
1. RAND() -- 取随机数
1.1. 函数:
RAND(): 随机生成 0-1 的小数RAND(X): 输入种子X,获取存在的某值
1.2. sql示例:
SELECT rand,RAND(rand),RAND() from pwct

注:同一x,即种子相同时,生成随机数相同;
种子为0,null,或字符串时,值都为RAND(0);
2. ABS(X) -- 求绝对值
2.1. 函数:
ABS(X): 求x的绝对值;
2.2. sql示例:
SELECT abs,ABS(abs) from pwct

注:x的值为null时,结果为null;为非数字时,结果为0;
3. SIGN(X) -- 获取X的+ —号
3.1. 函数:
SIGN(X): 获取数字X的正负符号。1表X为正数,-1表X为负数,0表数字0或其他字符。
3.1. sql示例:
SELECT sign,SIGN(sign) from pwct

4. SQRT(X) -- 求平方根
4.1. 函数:
SQRT(X): 求X的平方根。
4.2. sql示例:
SELECT sqrt,SQRT(sqrt) from pwct

注:X为null或负数时,结果为null;为0时结果为0。 SQRT(X)等同于power(x,0.5)
5. POW(X,Y),POWER(X,Y) -- 求X的Y次方
5.1. 函数:
POW(X,Y): 求X的Y次方。0POWER(X,Y): 与上等同。EXP(Y): 求e的Y次方根,等同于POW(e,Y)。
5.2. sql示例:
SELECT n,m,POW(n,m),TRUNCATE(EXP(1),2) as e,EXP(n),EXP(m) from pwct

6. MOD(N,M) -- 求余
6.1. 函数:
MOD(N,M): 求余,即N除以M后所得的余数。
6.2. sql示例:
SELECT n,m,MOD(n,m) from pwct

注:求余过程只取除数M的绝对值运算,且M不能为null,否则结果为null;结果正负与被除数N保持一致。
7. REPLACE -- 替换字符串
7.1. 函数:
LOG(X): 取以e为底X的对数LOG2(X): 取以2为底X的对数LOG10(X): 取以10为底X的对数LOG(B,X): 取以B为底X的对数;B∈(1,+∞),否则结果为null
7.2. sql示例:
SELECT LOG(EXP(2)),LOG(EXP(-2)),LOG2(4),LOG10(100),LOG(5,25)

8. CEIL(X),FLOOR(X) -- 上下取整
8.1. 函数:
CEIL(X)等同于CEILING(X): 向上取整FLOOR(X): 向下取整
8.2. sql示例:
SELECT ceil_floor,CEIL(ceil_floor),CEILING(ceil_floor),FLOOR(ceil_floor) from pwct

注: 字段值为null,结果为null;字段值为0或其他非数字字符串,结果为0
9. ROUND(X,D) -- 对X的第D位四舍五入
9.1. 函数:
ROUND(X): 对X进行四舍五入取整,等同于ROUND(X,0)。ROUND(X,D):对X的第D位四舍五入。
9.2. sql示例:
SELECT round,ROUND(round),ROUND(round,3),ROUND(round,1),ROUND(round,-1),ROUND(round,-3) from pwct;

注:
D取值为任意整数,正数表示小数点后第D位做四舍五入,负数表示小数点前第D位四舍五入
10. TRUNCATE(X,D) -- 保留X小数点后D位
10.1. 函数:
__TRUNCATE(X,D):保留X小数点后D位。
10.2. sql示例:
SELECT PI(),truncate(PI(),5),truncate(PI(),255)

注:
D取值为任意整数,正数表示取X小数点后前D位,负数表示舍弃X小数点前前D位,用0填补;
与ROUND的区别在于是否做四舍五入。
11. PI() -- 取π
11.1. 函数:
PI(): 取π。
12. DEGREES(X) ,RADIANS(X) -- 弧转角,角转弧
12.1. 函数:
DEGREES(X):弧度变角度。RADIANS(X):角度变弧度。
12.2. sql示例:
SELECT
PI() as rad,DEGREES(PI()) as " DEGREES(rad)",
180 as angle,RADIANS(180) as "RADIANS(angle)"
UNION
SELECT PI()/2,DEGREES(PI()/2),90,RADIANS(90)
UNION
SELECT -PI()/4,DEGREES(-PI()/4),-45,RADIANS(-45)
UNION
SELECT PI()/6,DEGREES(PI()/6),30,RADIANS(30)

注:
π;DEGREES(π) = 180;180;π = RADIANS(180)
π/2;DEGREES(π/2) = 90;90;π/2 = RADIANS(90)
13. SIN(X),COS(X),TAN(X) -- 正弦,余弦,正切
13.1. 函数:
SIN(X): 正弦。COS(X): 余弦。TAN(X): 正切 , X≠(PI()/2)±nπ。
13.2. sql示例:
SELECT r,truncate(DEGREES(r),0) as angle,SIN(r),COS(r),TAN(r)
from (SELECT PI()/2 as r
UNION SELECT PI()/3 UNION SELECT PI()/4
UNION SELECT PI()/6 UNION SELECT 0
UNION SELECT -PI()/6 UNION SELECT -PI()/2) t

注:上表中r取值因除运算导致误差,所以各三角函数值存在误差。
当r取(PI()/2)±nπ近似值时,TAN(r)趋于无穷大和无穷小,符合正切函数。
14. ASIN(X),ACOS(X),ATAN(X),COT(X) --反正弦,反余弦,反正切,余切
14.1. 函数:
ASIN(X): 反正弦。X∈(-∞,+∞) 。ACOS(X): 反余弦。X∈[-1,1]ATAN(X): 反正切。X∈[-1,1]COT(X): 余切。X ≠ nπ
14.2. sql示例:
SELECT ASIN(-1),ASIN(0),ASIN(1) -- X∈(-∞,+∞)
结果:
-1.5707963267948966 0 1.5707963267948966
SELECT ACOS(-1),ACOS(0),ACOS(1) -- X∈[-1,1]
结果:
3.141592653589793 1.5707963267948966 0
SELECT ATAN(-1),ATAN(0),ATAN(1) -- X∈[-1,1]
结果:
-0.7853981633974483 0 0.7853981633974483
SELECT COT(0.000000001),COT(1),COT(PI()/2),COT(PI()-0.000000001) -- X ≠ nπ
结果:
999999999.9999999 0.6420926159343306 6.123233995736766e-17 -999999794.7949913