MySQL第六章(单行函数之数值函数) 详细

一.函数的理解

不同DBMS之间的差异性很大, 只有很少的函数是被DBMS同时支持的,
大部分DBMS都会有自己特定的函数,这就意味着采用SQL函数的代码可移植性是很差的

MySQL提供的内置函数从功能角度可以分为,数值函数, 字符串函数, 日期函数, 流程控制函数, 加密与解密函数, 获取MySQL信息函数, 聚合函数等, 这里我们把这些简单分为两类: 单行函数和聚合函数

二.数值函数

1.基本函数

函数功能
ABS(x)返回x的绝对值
SIGN(x)返回x的符号, 正返回1, 负返回-1, 0返回0
PI()返回圆周率的值
CEIL(x) / CEILING(x)表示向上取整,只返回值X的整数部分,小数部分舍弃
FLOOR(x)表示向下取整,只返回值X的整数部分,小数部分舍弃
LEAST(x1,x2,x3…)返回列表中的最小值
GREATEST(x1,x2,x3…)返回列表中的最大值
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位小数的结果
SQRT(x)返回x的平方根, 当x的值为负数时,返回NULL
SELECT ABS(-1), ABS(-0.3), ABS(12), SIGN(13), 
SIGN(-14), SIGN(0),PI()
FROM DUAL 
/*
 ABS(-1)|ABS(-0.3)|ABS(12)|SIGN(13)|SIGN(-14)|SIGN(0)|PI()    |
-------+---------+-------+--------+---------+-------+--------+
      1|      0.3|     12|       1|       -1|      0|3.141593|
 */
SELECT CEIL(12.4), CEIL(12.5), CEILING(13.3), CEILING(13.9),
FLOOR(15.4),FLOOR(15.5) 
FROM DUAL
/*
 CEIL(12.4)|CEIL(12.5)|CEILING(13.3)|CEILING(13.9)|FLOOR(15.4)|FLOOR(15.5)|
----------+----------+-------------+-------------+-----------+-----------+
        13|        13|           14|           14|         15|         15|
 */
SELECT LEAST(5,9,0.4,-3), GREATEST(5,9,0.4,-3), MOD(13,5), MOD(-7,3),MOD(7,-3)
FROM DUAL 
/*
LEAST(5,9,0.4,-3)|GREATEST(5,9,0.4,-3)|MOD(13,5)|MOD(-7,3)|MOD(7,-3)|
-----------------+--------------------+---------+---------+---------+
             -3.0|                 9.0|        3|       -1|        1|
 */
SELECT RAND(),RAND(), RAND(2), RAND(2),
RAND(-4), RAND(-4) 
FROM DUAL 
/*
 RAND()           |RAND()            |RAND(2)           |RAND(2)           |RAND(-4)           |RAND(-4)           |
-----------------+------------------+------------------+------------------+-------------------+-------------------+
0.632833955467524|0.4289659144626613|0.6555866465490187|0.6555866465490187|0.15448799371206015|0.15448799371206015|
 */
SELECT ROUND(4), ROUND(4.3), ROUND(4.5),
ROUND(4.38),ROUND(4.73)
FROM DUAL 
/*
 ROUND(4)|ROUND(4.3)|ROUND(4.5)|ROUND(4.38)|ROUND(4.73)|
--------+----------+----------+-----------+-----------+
       4|         4|         5|          4|          5|
 */

SELECT ROUND(4.3,1), ROUND(4.5,0), ROUND(4.6,1),
ROUND(4.3,2),ROUND(4.37,1)
FROM DUAL 
/*
 ROUND(4.3,1)|ROUND(4.5,0)|ROUND(4.6,1)|ROUND(4.3,2)|ROUND(4.37,1)|
------------+------------+------------+------------+-------------+
         4.3|           5|         4.6|         4.3|          4.4|
 */
SELECT TRUNCATE(3.1415,2),TRUNCATE(3.1415,3),
TRUNCATE(3.1415,0),TRUNCATE(563.1415,-1),
TRUNCATE(563.1415,-2),TRUNCATE(563.1415,-3)
FROM DUAL
/*
 TRUNCATE(3.1415,2)|TRUNCATE(3.1415,3)|TRUNCATE(3.1415,0)|TRUNCATE(563.1415,-1)|TRUNCATE(563.1415,-2)|TRUNCATE(563.1415,-3)|
------------------+------------------+------------------+---------------------+---------------------+---------------------+
              3.14|             3.141|                 3|                  560|                  500|                    0|
 */
SELECT SQRT(4),SQRT(-2),SQRT(0)
FROM DUAL
/*
 SQRT(4)|SQRT(-2)|SQRT(0)|
-------+--------+-------+
    2.0|        |    0.0|
 */

2.角度与弧度互换函数

函数功能
RADIANS(x)将角度转化为弧度,其中,参数x为角度值
DEGREES(x)将弧度转化为角度,其中,参数x为弧度值

3.三角函数

函数功能
SIN(x)返回x的正弦值
ASIN(x)返回x的反正弦值,如果x的值不在-1到1之间,则返回NULL
COS(x)返回x的余弦值
ACOS(x)返回x的反余弦值,如果x的值不在-1到1之间,则返回NULL
TAN(x)返回x的正切值
ATAN(x)返回x的反正切值
ATAN2(m,n)返回两个参数的反正切值
COT(x)返回x的余切值

4.指数与对数

函数功能
POW(x,y) / POWER(x,y)返回x的y次方
EXP(x)返回e的x次方, e为2.7182…
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,2), POWER(2,3), EXP(3)
FROM DUAL 
/*
 POW(2,2)|POWER(2,3)|EXP(3)            |
--------+----------+------------------+
     4.0|       8.0|20.085536923187668|
 */
SELECT LN(3), LOG(3), LN(-1),
LOG10(2)
FROM DUAL 
/*
 LN(3)             |LOG(3)            |LN(-1)|LOG10(2)          |
------------------+------------------+------+------------------+
1.0986122886681098|1.0986122886681098|      |0.3010299956639812|
 */

5.进制间的转换

函数功能
BIN(x)返回x的二进制编码
HEX(x)返回x的十六进制编码
OCT(x)返回x的八进制编码
CONV(x,f1,f2)返回f1进制数变成f2进制数
SELECT BIN(31415),HEX(31415),
OCT(31415),CONV(314,8,2)
FROM DUAL 

/*
 BIN(31415)     |HEX(31415)|OCT(31415)|CONV(314,8,2)|
---------------+----------+----------+-------------+
111101010110111|7AB7      |75267     |11001100     |
 */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值