MySQL常用数学函数使用指南

Dylan
Dylan
发布时间:2026-10-14 | 5人浏览过
原创

在MySQL数据库开发中,处理数值型数据离不开内置的数学函数。本文系统整理了MySQL中常用的数学运算工具,包括绝对值、取余、四舍五入、指数对数及三角函数等,通过实际的SQL查询语句展示各函数的参数要求与返回结果。

基础数值处理函数

在处理具体业务数据时,常需对原始数据进行规范化或符号修正。以下函数可用于基础的数值转换:

第1步:获取绝对值

目的:去除数值的负号,仅保留大小。
函数:ABS(x)
示例:查询数值 1、-1 和 0 的绝对值。

复制代码 代码如下:

mysql> select ABS(1), ABS(-1), ABS(0);
+--------+---------+--------+
| ABS(1) | ABS(-1) | ABS(0) |
+--------+---------+--------+
|      1 |       1 |      0 |
+--------+---------+--------+

第2步:圆周率常数获取

目的:获取高精度的π值用于后续计算。
函数:PI()
结果:返回 3.141593。

第3步:开平方根

目的:计算非负数的平方根。若传入负数,将返回NULL。
函数:SQRT(x)

注意:SQRT(0) 结果为 0,而 SQRT(-49) 为 NULL。

复制代码 代码如下:

mysql> select SQRT(49), SQRT(0), SQRT(-49);
+----------+---------+-----------+
| SQRT(49) | SQRT(0) | SQRT(-49) |
+----------+---------+-----------+
|        7 |       0 |      NULL |
+----------+---------+-----------+

第4步:符号判断

目的:判断数值的正负状态。
函数:SIGN(x)
规则:返回 -1(负数)、0(零)或 1(正数)。

复制代码 代码如下:
mysql> select SIGN(-21), SIGN(-0),SIGN(0), SIGN(0.0), SIGN(21);
+-----------+----------+---------+-----------+----------+
| SIGN(-21) | SIGN(-0) | SIGN(0) | SIGN(0.0) | SIGN(21) |
+-----------+----------+---------+-----------+----------+
|        -1 |        0 |       0 |         0 |        1 |
+-----------+----------+---------+-----------+----------+

取模与整除相关

在分页逻辑、循环周期或特定比例计算中,取模(Modulus)函数非常关键。

第5步:计算余数

目的:获取两数相除后的精确余数,支持负数及小数运算。
函数:MOD(x,y)
特点:返回除法运算后的精确余数,即使包含小数部分也起作用。

复制代码 代码如下:

mysql> select MOD(31,8), MOD(21,-8), MOD(-7,2), MOD(-7,-2), MOD(45.5,6);
+-----------+------------+-----------+------------+-------------+
| MOD(31,8) | MOD(21,-8) | MOD(-7,2) | MOD(-7,-2) | MOD(45.5,6) |
+-----------+------------+-----------+------------+-------------+
|         7 |          5 |        -1 |         -1 |         3.5 |
+-----------+------------+-----------+------------+-------------+

第6步:向上/下取整

目的:处理浮点数转换为整数时的边界情况。
函数:CEIL(X) / CEILING(X)(向上),FLOOR(X)(向下)

  • CEIL/CEILING:返回不小于 X 的最小整数值(如 3.35 → 4)。
  • FLOOR:返回不大于 X 的最大整数值(如 3.35 → 3)。
复制代码 代码如下:

mysql> select CEIL(-3.35), CEIL(3.35);
+-------------+------------+
| CEIL(-3.35) | CEIL(3.35) |
+-------------+------------+
|          -3 |          4 |
+-------------+------------+

6. CEILING(X): 同CEIL(X)
复制代码 代码如下:

mysql> select CEILING(-3.35), CEILING(3.35);
+----------------+---------------+
| CEILING(-3.35) | CEILING(3.35) |
+----------------+---------------+
|             -3 |             4 |
+----------------+---------------+

7. FLOOR(X):返回不大于X的最大整数值,返回值转为一个BIGINT.
复制代码 代码如下:

mysql> select FLOOR(-3.35), FLOOR(3.35);
+--------------+-------------+
| FLOOR(-3.35) | FLOOR(3.35) |
+--------------+-------------+
|           -4 |           3 |
+--------------+-------------+

近似与截断处理

针对金额、百分比等需要固定精度的场景,ROUND和TRUNCATE提供了不同的处理策略。

第7步:四舍五入 (ROUND)

目的:按指定精度四舍五入数值。
函数:ROUND(X,Y)。Y省略默认为0;Y为正数保留小数位,为负数则对小数点左侧进行舍入。

示例逻辑:
- ROUND(1.14) → 1
- ROUND(1.9) → 2
- ROUND(232.38, -1) → 230

复制代码 代码如下:
mysql> select ROUND(-1.14), ROUND(-1.9), ROUND(1.14), ROUND(1.9);
+--------------+-------------+-------------+------------+
| ROUND(-1.14) | ROUND(-1.9) | ROUND(1.14) | ROUND(1.9) |
+--------------+-------------+-------------+------------+

第8步:直接截取 (TRUNCATE)

目的:丢弃指定位数后的数字,不做四舍五入。
函数:TRUNCATE(X,Y)

对比:若Y=1,TRUNCATE(1.33, 1) 结果为 1.3,而 ROUND(1.33, 1) 结果为 1.3;但 TRUNCATE(1.99, 1) 结果为 1.9,不会进位。

复制代码 代码如下:

mysql> select TRUNCATE(1.33,1), TRUNCATE(1.99,1), TRUNCATE(1.99,0), TRUNCATE(19.99,-1);
+------------------+------------------+------------------+--------------------+
| TRUNCATE(1.33,1) | TRUNCATE(1.99,1) | TRUNCATE(1.99,0) | TRUNCATE(19.99,-1) |
+------------------+------------------+------------------+--------------------+
|              1.3 |              1.9 |                1 |                 10 |
+------------------+------------------+------------------+--------------------+

随机数与幂运算

第9步:生成随机数

目的:生成 0 到 1 之间的浮点数。

  • RAND():每次执行返回不同结果。
  • RAND(X):X为种子值。相同X产生相同序列,常用于复现随机数据。
复制代码 代码如下:

mysql> select RAND(10), RAND(10), RAND(2), RAND(-2);
+--------------------+--------------------+--------------------+--------------------+
| RAND(10)           | RAND(10)           | RAND(2)            | RAND(-2)           |
+--------------------+--------------------+--------------------+--------------------+
| 0.6570515219653505 | 0.6570515219653505 | 0.6555866465490187 | 0.6548542125661431 |
+--------------------+--------------------+--------------------+--------------------+

第10步:乘方与指数

目的:计算底数的N次幂或e的N次方。

  • POW(X,Y) / POWER(X,Y):X的Y次幂。例如 POW(2, -2) 结果为 0.25。
  • EXP(X):自然常数 e 的 X 次幂。例如 EXP(0) 结果为 1。

第11步:对数运算

注意:LOG函数仅接受正数输入,负数或0将返回NULL。

  • LOG(X):自然对数(以e为底)。
  • LOG10(X):以10为底的对数。
复制代码 代码如下:

mysql> select LOG(-3), LOG(0), LOG(3), LOG10(-100), LOG10(0), LOG10(100);
+---------+--------+--------------------+-------------+----------+------------+
| LOG(-3) | LOG(0) | LOG(3)             | LOG10(-100) | LOG10(0) | LOG10(100) |
+---------+--------+--------------------+-------------+----------+------------+
|    NULL |   NULL | 1.0986122886681098 |        NULL |     NULL |          2 |
+---------+--------+--------------------+-------------+----------+------------+

角度与弧度转换及三角函数

第12步:单位转换

目的:在角度制与弧度制之间切换。

  • RADIANS(X):角度转弧度。
  • DEGREES(X):弧度转角度。
复制代码 代码如下:

mysql> select RADIANS(90), RADIANS(180), DEGREES(PI()), DEGREES(PI()/2);
+--------------------+-------------------+---------------+-----------------+
| RADIANS(90)        | RADIANS(180)      | DEGREES(PI()) | DEGREES(PI()/2) |
+--------------------+-------------------+---------------+-----------------+
| 1.5707963267948966 | 3.141592653589793 |           180 |              90 |
+--------------------+-------------------+---------------+-----------------+

第13步:三角函数计算

说明:正弦(SIN)、余弦(COS)、正切(TAN)及其反函数(ASIN, ACOS, ATAN)均以**弧度**作为输入参数。余切(COT)为正切的倒数。

限制条件:反三角函数 ASIN 和 ACOS 的输入值必须介于 -1 到 1 之间,否则可能产生错误或返回NULL。

复制代码 代码如下:

mysql> select SIGN(PI()/2),ASIN(1),COS(PI()), ACOS(-1), TAN(PI()/4), ATAN(1), COT(0.5);
+--------------+--------------------+-----------+-------------------+--------------------+--------------------+-------------------+
| SIGN(PI()/2) | ASIN(1)            | COS(PI()) | ACOS(-1)          | TAN(PI()/4)        | ATAN(1)            | COT(0.5)          |
+--------------+--------------------+-----------+-------------------+--------------------+--------------------+-------------------+
|            1 | 1.5707963267948966 |        -1 | 3.141592653589793 | 0.9999999999999999 | 0.7853981633974483 | 1.830487721712452 |
+--------------+--------------------+-----------+-------------------+--------------------+--------------------+-------------------+

以上就是MySQL数学函数简明总结的详细内容,更多关于MySQL数据处理技巧的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表