MySQL函数学习(二)-----数值型函数

[删除(380066935@qq.com或微信通知)]

更好的阅读体验请查看原文:https://www.cnblogs.com/hmpn/p/15951947.html

注:笔记旨在记录

二、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

数值型函数1_RAND.png

注:同一x,即种子相同时,生成随机数相同;
种子为0,null,或字符串时,值都为RAND(0);


2. ABS(X) -- 求绝对值

2.1. 函数:

  • ABS(X) : 求x的绝对值;

2.2. sql示例:

SELECT abs,ABS(abs) from pwct 

数值型函数2_ABS.png

注: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

数值型函数3_SIGN.png

注:当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

数值型函数4_SQRT.png

注: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

数值型函数5_POW.png


6. MOD(N,M) -- 求余

6.1. 函数:

  • MOD(N,M): 求余,即N除以M后所得的余数。

6.2. sql示例:

SELECT n,m,MOD(n,m) from pwct

数值型函数6_MODE.png

注:求余过程只取除数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)

数值型函数7_LOG.png


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

数值型函数8_CEIL.png

注: 字段值为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;

数值型函数9_ROUND.png

注: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)

数值型函数10_TRUNCATE.png

注: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)

数值型函数11_DEGREES_RADIANS.png

注:π ; 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

数值型函数12_SIN_COS_TAN.png

注:上表中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