MySQL提供了许多数字函数,用于对数字进行各种计算和处理。以下是一些常用的MySQL数字函数。
内容有点多,建议收藏以备后续用到查阅参考。
目录
[一、SIGN 取数字的符号](#一、SIGN 取数字的符号)
[二、ABS 取绝对值](#二、ABS 取绝对值)
[三、COS 取余弦值](#三、COS 取余弦值)
[四、ACOS 取反余弦值](#四、ACOS 取反余弦值)
[五、SIN 取正弦值](#五、SIN 取正弦值)
[六、ASIN 取反正弦值](#六、ASIN 取反正弦值)
[七、TAN 取正切值](#七、TAN 取正切值)
[八、ATAN 取反正切值](#八、ATAN 取反正切值)
[九、ATAN2 取反正切值](#九、ATAN2 取反正切值)
[十、 COT 取余切值](#十、 COT 取余切值)
[十一、CEIL 向上取整](#十一、CEIL 向上取整)
[十二、CEILING 向上取整](#十二、CEILING 向上取整)
[十三、FLOOR 向下取整](#十三、FLOOR 向下取整)
[十四、ROUND 取四舍五入](#十四、ROUND 取四舍五入)
[十五、TRUNCATE 截取小数位](#十五、TRUNCATE 截取小数位)
[十六、CONV 进制转为另一个进制](#十六、CONV 进制转为另一个进制)
[十七、DIV 取除法值](#十七、DIV 取除法值)
[十八、EXP e的指定数值的次方](#十八、EXP e的指定数值的次方)
[十九、GREATEST 取列表的最大值](#十九、GREATEST 取列表的最大值)
[二十、LEAST 取列表的最小值](#二十、LEAST 取列表的最小值)
[二十一、LN 取指定数字的自然对数](#二十一、LN 取指定数字的自然对数)
[二十二、LOG 指定数字的指定底数的对数](#二十二、LOG 指定数字的指定底数的对数)
[二十三、LOG10 指定数字的以 10 为底的对数](#二十三、LOG10 指定数字的以 10 为底的对数)
[二十四、LOG2 指定数字的以 2 为底的对数](#二十四、LOG2 指定数字的以 2 为底的对数)
[二十五、MOD 取两数的余数](#二十五、MOD 取两数的余数)
[二十六、PI 值](#二十六、PI 值)
[二十七、POW 计算 x 的 y 次幂](#二十七、POW 计算 x 的 y 次幂)
[二十八、POWER 计算 x 的 y 次幂](#二十八、POWER 计算 x 的 y 次幂)
[二十九、SQRT 取平方根](#二十九、SQRT 取平方根)
[三十、DEGREES 弧度值转为度数](#三十、DEGREES 弧度值转为度数)
[三十一、RADIANS 度数值转为弧度值](#三十一、RADIANS 度数值转为弧度值)
[三十二、RAND 取0到1的随机数](#三十二、RAND 取0到1的随机数)
一、SIGN 取数字的符号
MySQL SIGN()
函数返回指定的数字的符号。参数为正数、负数和零时分别返回 1
, -1
和 0
。
语法:
sql
SIGN(number)
参数说明:
number
:必需的。 一个数字。
返回值:
- 返回值为
1
,-1
,0
和NULL
中的一个:- 如果
number
大于0
,SIGN()
函数将会返回1
。 - 如果
number
等于0
,SIGN()
函数将会返回0
。 - 如果
number
小于0
,SIGN()
函数将会返回-1
。 - 如果
number
为NULL
,SIGN()
函数将会返回NULL
。
- 如果
示例:
sql
SELECT
SIGN(123), -- 1
SIGN(123.123), -- 1
SIGN(-123), -- -1
SIGN(-123.123), -- -1
SIGN(0), -- 0
SIGN(NULL) -- NULL
二、ABS 取绝对值
MySQL ABS()
函数返回指定数字的绝对值。
语法:
sql
ABS(number)
参数说明:
- *
number
*必需的。 一个用于计算绝对值的数字。
返回值:
- 返回数字的绝对(正)值。
- 如果参数
number
为字符串,ABS()
将按照如下规则尝试转为数字:- 如果以数字开头,则将开头的数字部分转为数字。
- 如果不能转为数字,则按照
0
处理。
- 返回
NULL情况:number
为NULL。
示例:
sql
SELECT
ABS(100), -- 100
ABS(-100), -- 100
ABS('100'), -- 100
ABS('-100'), -- 100
ABS('-100A') -- 100
ABS('A100'), -- 0
ABS(NULL) -- null
三、COS 取余弦值
MySQL COS()
函数返回指定数值的余弦值。
语法:
sql
COS(number)
参数说明:
number
:必需的。 一个用于计算余弦值的数值。
返回值:
- 指定数值的余弦值。
- 返回
NULL情况:number
为NULL。
示例:
sql
SELECT
COS(2.5), -- -0.8011436155469337
COS(0.2), -- 0.9800665778412416
COS(-0.5), -- 0.8775825618903728
COS(-0.2), -- 0.9800665778412416
COS(0), -- 1
COS(PI()), -- -1
COS(NULL) -- NULL
四、ACOS 取反余弦值
MySQL ACOS()
函数返回指定数值的反余弦值。
语法:
sql
ACOS(number)
参数说明:
number
:必需的。 一个用于计算反余弦值的数值。
返回值:
- 返回指定数值的反余弦值。
- 返回
NULL情况:
number
不在-1
到1
之间。number
为NULL。
示例:
sql
SELECT
ACOS(0.5), -- 1.0471975511965976
ACOS(0.2), -- 1.3694384060045657
ACOS(-0.5), -- 2.0943951023931957
ACOS(-0.2), -- 1.7721542475852274
ACOS(1), -- 0
ACOS(0), -- 1.5707963267948966
ACOS(-1), -- 3.141592653589793
ACOS(2), -- NULL
ACOS(-2), -- NULL
ACOS(NULL) -- NULL
五、SIN 取正弦值
MySQL SIN()
函数返回指定数值的正弦值。
语法:
sql
SIN(number)
参数说明:
number
:必需的。 一个用于计算正弦值的数值。
返回值:
- 指定数值的正弦值。
- 返回
NULL情况:number
为NULL。
示例:
sql
SELECT
SIN(2.5), -- 0.5984721441039564
SIN(0.2), -- 0.19866933079506122
SIN(-0.5), -- -0.479425538604203
SIN(0), -- 0
SIN(PI()), -- 1.2246467991473532e-16
SIN(NULL) -- NULL
六、ASIN 取反正弦值
MySQL ASIN()
函数返回指定数值的反正弦值。
语法:
sql
ASIN(number)
参数说明:
number
:必需的。 一个用于计算反正弦值的数值。
返回值:
- 指定数值的反正弦值。
- 返回
NULL情况:
number
不在-1
到1
之间。number
为NULL。
示例:
sql
SELECT
ASIN(0.5), -- 0.5235987755982988
ASIN(-0.5), -- -0.5235987755982988
ASIN(1), -- 1.5707963267948966
ASIN(0), -- 0
ASIN(-1), -- -1.5707963267948966
ASIN(2), -- NULL
ASIN(NULL) -- NULL
七、TAN 取正切值
MySQL TAN()
函数返回指定数值的正切值。
语法:
sql
TAN(number)
参数说明:
number
:必需的。 一个用于计算正切值的数值。
返回值:
- 指定数值的正切值。
- 返回
NULL情况:number
为NULL。
示例:
sql
SELECT
TAN(2.5), -- -0.7470222972386602
TAN(0.2), -- 0.20271003550867248
TAN(-0.5), -- -0.5463024898437905
TAN(0), -- 0
TAN(PI()), -- -1.2246467991473532e-16
TAN(NULL) -- NULL
八、ATAN 取反正切值
MySQL ATAN()
函数返回指定数值的反正切值。
语法:
sql
ATAN(number)
ATAN(x, y)
参数说明:
number
:必需的。 一个用于计算反正切值的数值。x, y
:必需的。 一个用于计算反正切值的两个数值。x
和y
的符号用于确定结果的象限。
返回值:
- 指定数值的反正切值。
- 返回
NULL情况:number
为NULL。
示例:
sql
SELECT
ATAN(2.5), -- 1.1902899496825317
ATAN(0.2), -- 0.19739555984988078
ATAN(-0.5), -- -0.46364760900080615
ATAN(-0.9, 2), -- -0.4228539261329407
ATAN(PI(), 2), -- 1.0038848218538872
ATAN(NULL) -- NULL
九、ATAN2 取反正切值
MySQL ATAN2()
函数返回指定数值的反正切值。
语法:
sql
ATAN2(x, y)
参数说明:
x, y
:必需的。 一个用于计算反正切值的两个数值。x
和y
的符号用于确定结果的象限。
返回值:
- 指定数值的反正切值。
- 返回
NULL情况:
任一参数为NULL。
示例:
sql
SELECT
ATAN2(2.5, 1), -- 1.1902899496825317
ATAN2(0.75, 1), -- 0.6435011087932844
ATAN2(-0.9, 2), -- -0.4228539261329407
ATAN2(PI(), 2), -- 1.0038848218538872
ATAN2(NULL) -- NULL
十、 COT 取余切值
MySQL COT()
函数返回指定数值的余切值。
语法:
sql
COT(number)
参数说明:
number
:必需的。 一个用于计算余切值的数值。
返回值:
- 指定数值的余切值。
- 返回
NULL情况:number
为NULL。
示例:
sql
SELECT
COT(2.5), -- -1.3386481283041516
COT(0.2), -- 4.933154875586894
COT(-0.5), -- -1.830487721712452
COT(PI()), -- -8.165619676597685e15
COT(NULL) -- NULL
十一、CEIL 向上取整
MySQL CEIL()
函数返回大于或等于指定数字的最小整数值。CEIL()
函数等同于 CEILING() 函数。
语法:
sql
CEIL(number)
参数说明:
number
:必需的。 一个数字。
返回值:
- 大于或等于指定数字的最小整数值。
- 返回
NULL情况:number
为NULL。
示例:
sql
SELECT
CEIL(123.123), -- 124
CEIL(123), -- 123
CEIL(-123.123), -- -123
CEIL(-123), -- -123
CEIL(-100), -- -100
CEIL(NULL) -- NULL
十二、CEILING 向上取整
MySQL CEILING() 函数返回大于或等于指定数字的最小整数值。CEILING() 函数等同于 CEIL() 函数。
语法:
sql
CEILING(number)
参数说明:
number
:必需的。 一个数字。
返回值:
- 大于或等于指定数字的最小整数值。
- 返回
NULL情况:number
为NULL。
示例:
sql
SELECT
CEILING(123.789), -- 124
CEILING(123), -- 123
CEILING(-123.123), -- -123
CEILING(-123), -- -123
CEILING(NULL)-- NULL
十三、FLOOR 向下取整
MySQL FLOOR()
函数返回小于或等于指定数字的最大整数值。
语法:
sql
FLOOR(number)
参数说明:
number
:必需的。 一个数字。
返回值:
- 小于或等于指定数字的最大整数值。
- 返回
NULL情况:number
为NULL。
示例:
sql
SELECT
FLOOR(123.123), -- 123
FLOOR(123), -- 123
FLOOR(-123.123), -- -124
FLOOR(-123), -- -123
FLOOR(NULL) -- NULL
十四、ROUND 取四舍五入
MySQL ROUND()
函数将数字四舍五入到指定的小数位数。
语法:
sql
ROUND(x, d)
参数说明:
x
:必需的。 被处理的数字。d
:必需的。 需要保留的小数位数。
返回值:
- 将数字四舍五入到指定的小数位数。
- 如果
d
大于等于x
的小数位数,则返回原数字。 - 如果
d
小于x
的小数位数,则将x
的小数位四舍五入到d
位后返回。 - 如果
d
为负数,ROUND()
函数将会从小数点开始向整数部分的d
位数字替换为0
。 - 返回
NULL情况:任
意一个参数为NULL。
示例:
sql
SELECT
ROUND(123.179, 1), -- 123.2
ROUND(123.179, 4), -- 123.179
ROUND(123.179, 0), -- 123
ROUND(123.179, -2), -- 100
ROUND(123.179, NULL) -- NULL
十五、TRUNCATE 截取小数位
MySQL TRUNCATE()
函数截取数字为指定的小数位数。 TRUNCATE()
函数只是按指定的位数截断小数,而不进行四舍五入。
语法:
sql
TRUNCATE(x, d)
参数说明:
x
:必需的。 被处理的数字。d
:必需的。 需要保留的小数位数。
返回值:
- 保留了指定小数位的数字。
- 如果
d
大于等于x
的小数位数,则返回原数字。 - 如果
d
小于x
的小数位数,则将x
的小数位数截断为d
位后返回。 - 如果
d
为负数,TRUNCATE()
函数将会从小数点开始向整数部分的d
位数字替换为0
。 - 返回
NULL情况:
任意一个参数为NULL。
示例:
sql
SELECT
TRUNCATE(123.179, 1), -- 123.1
TRUNCATE(123.179, 4), -- 123.179
TRUNCATE(123.179, 0), -- 123
TRUNCATE(123.179, -2), -- 100
TRUNCATE(123.179, NULL) -- NULL
十六、CONV 进制转为另一个进制
MySQL CONV()
函数将数字从一个进制转为另一个进制,比如从 10 进制转为 2 进制。
语法:
sql
CONV(num, from_base, to_base)
参数说明:
num
:必需的。一个数字。from_base
:必需的。 数字当前使用的进制。从 2 到 36。to_base
:必需的。 将数字转为的进制。从 2 到 36。
返回值:
- 将数字从一个进制转为另一个进制。
- 返回
NULL情况:
任意一个参数为NULL。
示例:
sql
SELECT
CONV('A', 16, 10), -- 10
CONV('C', 16, 10), -- 12
CONV('E', 16, 10), -- 14
CONV('F', 16, NULL) -- NULL
十七、DIV 取除法值
在 MySQL 中, DIV
操作符计算两个整数的除法并返回一个整数结果。
语法:
sql
x DIV y
参数说明:
x
:必需的。 被除数。y
:必需的。 除数。
返回值:
x DIV y
返回x
除以y
的结果的整数部分。- 若参数 x 或者 y 不是整数,则会先将他们转为 DECIMAL 类型后再计算。
示例:
sql
SELECT
10 DIV 3, -- 3
10 / 3, -- 3.3333
FLOOR(10/3), -- 3
9.8 DIV 2.6, -- 3
9.8 / 2.6, -- 3.76923
FLOOR(9.8/2.6) -- 3
十八、EXP e
的指定数值的次方
MySQL EXP()
函数返回自然常数 e
的指定数值的次方,例如 EXP(2)
返回结果是 e2
。
语法:
sql
EXP(number)
参数说明:
number
:必需的。 次方值。
返回值:
- 自然常数
e
的指定数值的次方。 - 返回
NULL情况:number
为NULL。
示例:
sql
SELECT
EXP(0), -- 1
EXP(2), -- 7.38905609893065
EXP(-1), -- 0.36787944117144233
EXP(NULL) -- NULL
十九、GREATEST 取列表的最大值
MySQL GREATEST()
函数返回参数列表中的最大值。
语法:
sql
GREATEST(param1, param2, ..., paramN)
参数说明:
- *
param1, param2, ..., paramN:
*必需的。用于比较的参数列表。所有的参数都参与比较。参数可以是任意的数据类型,或者表达式。
返回值:
- 参数列表中的最大值。
- 返回
NULL情况:
任意一个参数为NULL。
示例:
sql
SELECT
GREATEST(2, 1, 5), -- 5
GREATEST(2, 1, 5, '0'), -- 5
GREATEST('a', 'b', 'c'), -- c
GREATEST('Hello', 'World'), -- World
GREATEST('a', 'b', NULL) -- NULL
二十、LEAST 取列表的最小值
MySQL LEAST()
函数返回参数列表中的最小值。
语法:
sql
LEAST(param1, param2, ..., paramN)
参数说明:
param1, param2, ..., paramN
:必需的。用于比较的参数列表。所有的参数都参与比较。参数可以是任意的数据类型,或者表达式。
返回值:
- 参数列表中的最小值。
- 返回
NULL情况:
任意一个参数为NULL。
示例:
sql
SELECT
LEAST(2, 1, 5), -- 1
LEAST(2, 1, 5, '0'), -- 0
LEAST('a', 'b', 'c'), -- a
LEAST('Hello', 'World'), -- Hello
LEAST('a', 'b', NULL) -- NULL
二十一、LN 取指定数字的自然对数
MySQL LN()
函数返回指定数字的自然对数。
语法:
sql
LN(number)
参数说明:
number
:必需的。 一个用于计算自然对数的数字。该值必须大于0
。
返回值:
- 指定数字的自然对数。
- 返回
NULL情况:
number
小于或等于0。
number
为NULL。
示例:
sql
SELECT
LN(1), -- 0
LN(2), -- 0.6931471805599453
LN(0), -- NULL
LN(-1), -- NULL
LN(NULL) -- NULL
二十二、LOG 指定数字的指定底数的对数
MySQL LOG()
函数返回指定数字的指定底数的对数。
语法:
sql
LOG(number)
LOG(base, number)
参数说明:
number
:必需的。 一个用于计算对数的数字。该值必须大于0
。base
:可选参数。 底数。该值必须大于1
。
返回值:
- 指定数字的指定底数的对数。
- 返回
NULL情况:
number
小于或等于0。
base
小于或等于1。
- 任意一个参数为
NULL。
示例:
sql
SELECT
LOG(1), -- 0
LOG(EXP(1), 2), -- 0.6931471805599453
LOG(10, 100), -- 2
LOG(-1), -- NULL
LOG(1, 10), -- NULL
LOG(NULL) -- NULL
二十三、LOG10 指定数字的以 10 为底的对数
MySQL LOG10()
函数返回指定数字的以 10 为底的对数。等同于 LOG(10, number) 函数。
二十四、LOG2 指定数字的以 2 为底的对数
MySQL LOG2()
函数返回指定数字的以 2 为底的对数。等同于 LOG(2, number) 函数。
二十五、MOD 取两数的余数
MySQL MOD()
函数返回一个数字除以另一个数字的余数。
语法:
sql
MOD(number1, number2)
number1 MOD number2
number1 % number2
参数说明:
number1
:必需的。 被除数。number2
:必需的。 除数。
返回值:
- 一个数字除以另一个数字的余数。
- 返回
NULL情况:
number2
等于0。
number1
为NULL。
示例:
sql
SELECT
MOD(100, 10), -- 0
100 MOD 7, -- 2
100 % 7, -- 2
100 % 10, -- 0
MOD(0, 1), -- 0
MOD(1, 0), -- NULL
MOD(NULL, 1) -- NULL
二十六、PI 值
MySQL PI()
函数返回 6 位小数位的 PI 值。
语法:
sql
PI()
示例:
sql
SELECT
PI(), -- 3.141593
PI() + 0.000000, -- 3.141593
PI() * 1000000000000 -- 3141592653589.793000
二十七、POW 计算 x
的 y
次幂
MySQL POW(x, y)
函数计算 x
的 y
次幂并返回结果,即: y个x相乘。
语法:
sql
POW(x, y)
参数说明:
x
:必需的。 次幂计算中的基数。y
:必需的。 次幂计算中的指数。
返回值:
x
的y
次幂并返回结果。- 返回
NULL情况
:任意一个参数为NULL。
示例:
sql
SELECT
POW(2, 0), -- 1
POW(2.5, 2), -- 6.25
POW(2, -4), -- 0.0625
POW(2, NULL) -- NULL
二十八、POWER 计算 x
的 y
次幂
MySQL POWER(x, y) 函数计算 x 的 y 次幂并返回结果,即: xy。 POWER() 函数等同于 POW() 函数。
二十九、SQRT 取平方根
MySQL SQRT()
函数返回一个数字的平方根。
语法:
sql
SQRT(number)
参数说明:
number
:必需的。 一个用于计算对数的数字。该值必须大于0
。
返回值:
- 参数
number
的平方根。 - 返回
NULL情况:number
是负数或者NULL。
示例:
sql
SELECT
SQRT(16), -- 4
SQRT(101), -- 10.04987562112089
SQRT(-100), -- NULL
SQRT(NULL) -- NULL
三十、DEGREES 弧度值转为度数
MySQL DEGREES()
函数将弧度值转为度数并返回。
语法:
sql
DEGREES(number)
参数说明:
number
:必需的。 一个表示弧度的数字。
返回值:
- 指定的弧度值对应的度数。
- 返回
NULL情况:number
为NULL。
示例:
sql
SELECT
DEGREES(0.75), -- 42.97183463481174
DEGREES(-0.75), -- -42.97183463481174
DEGREES(0), -- 0
DEGREES(PI() * 2), -- 360
DEGREES(PI() * -1), -- -180
DEGREES(NULL) -- NULL
三十一、RADIANS
度数值转为弧度值
MySQL RADIANS()
函数将度数值转为弧度值并返回。
语法:
sql
RADIANS(number)
参数说明:
number
:必需的。 一个表示度数的数字。
返回值:
- 指定的弧度值对应的度数。
- 返回
NULL情况:number
为NULL。
示例:
sql
SELECT
RADIANS(0), -- 0
RADIANS(360), -- 6.283185307179586
RADIANS(-360), -- -6.283185307179586
RADIANS(NULL) -- NULL
三十二、RAND 取0到1的随机数
MySQL RAND()
函数返回一个 0 (包含) 和 1 (不包含) 之间的随机数。
语法:
sql
RAND()
RAND(seed)
参数说明:
seed
:可选的。产生随机数的种子。如果提供了seed
,RAND(seed)
函数将产生一个可重复的随机数序列。
返回值:
- 一个 0 (包含) 和 1 (不包含) 之间的随机数。
- 若提供了参数
seed
,MySQLRAND(seed)
函数将产生一个可重复的随机数序列。 - 若想返回其他区间(比如
m
和n
)的随机数,请使用以下公式:m
和n
之间的随机数:RAND() * (n - m) + m
m
和n
之间的随机整数:FLOOR(RAND() * (n - m + 1) + m)
示例:
sql
SELECT
RAND(), -- 0.9892005063492809
RAND(), -- 0.2601393091121123
RAND(), -- 0.3330950572463638
RAND() -- 0.8850573896291268