注:笔记旨在记录
二、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
注:当pos超过str长度时,会直接返回str作为结果。
当len超过str剩余长度(pos位往后)时,会将pos位往后的所有替换为newstr
LAST_INSERT_ID(): 获取最后插入的ID值
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次方。0<Y<1时,求的是X的1/Y次方根。POWER(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;结果正负与被除数M保持一致。
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