MySQL 常见数值函数速查与使用示例
本文将系统梳理 MySQL 数据库中最常用的数值处理函数,包括绝对值计算、取余操作、数值舍入(四舍五入与截断)、随机数生成以及幂运算等。通过对比不同函数的语法差异并提供可直接运行的 SQL 示例,帮助用户在实际开发中高效解决数据计算与清洗问题。
获取绝对值
ABS(X) 函数用于返回数字 X 的绝对值。无论是负数转为正数,还是保持正数和零不变,该函数都能准确处理。
mysql> SELECT ABS(2), ABS(-32), ABS(-0.5);
+--------+----------+-----------+
| ABS(2) | ABS(-32) | ABS(-0.5) |
+--------+----------+-----------+
| 2 | 32 | 0.5 |
+--------+----------+-----------+
1 row in set (0.01 sec)
执行求余运算
MySQL 提供了三种等效方式来进行取余操作:MOD(N,M) 函数、N % M 运算符以及 N MOD M 关键字。它们的结果完全一致。
mysql> SELECT MOD(10,3), 20%3, 15 MOD 4;
+-----------+------+----------+
| MOD(10,3) | 20%3 | 15 MOD 4 |
+-----------+------+----------+
| 1 | 2 | 3 |
+-----------+------+----------+
1 row in set (0.00 sec)
整数舍入与取整
在处理浮点数时,通常需要根据业务需求向上或向下取整:
CEIL(X)或CEILING(X):返回大于或等于X的最小整数。FLOOR(X):返回小于或等于X的最大整数。
mysql> SELECT CEIL(2.1234), CEILING(3.1234), FLOOR(4.1234);
+--------------+-----------------+---------------+
| CEIL(2.1234) | CEILING(3.1234) | FLOOR(4.1234) |
+--------------+-----------------+---------------+
| 3 | 4 | 4 |
+--------------+-----------------+---------------+
1 row in set (0.00 sec)
生成随机数
RAND() 函数返回一个介于 0 到 1 之间的伪随机浮点数。值得注意的是,传入相同的种子参数 RAND(X),可以产生重复的随机序列,这在需要复现特定数据集时非常有用。
mysql> SELECT RAND(), RAND();
+--------------------+---------------------+
| RAND() | RAND() |
+--------------------+---------------------+
| 0.8802711524816893 | 0.21204793100436026 |
+--------------------+---------------------+
1 row in set (0.00 sec)
-- 使用种子值生成可预测的随机序列
mysql> SELECT RAND(2), RAND(2), RAND(1000000);
+--------------------+--------------------+--------------------+
| RAND(2) | RAND(2) | RAND(1000000) |
+--------------------+--------------------+--------------------+
| 0.6555866465490187 | 0.6555866465490187 | 0.2644144708890603 |
+--------------------+--------------------+--------------------+
1 row in set (0.00 sec)
四舍五入处理
ROUND(X) 用于将数值四舍五入为最接近的整数;ROUND(X, Y) 则保留小数点后 Y 位。注意 Y 可以是负数,表示对整数部分进行舍入。
mysql> SELECT ROUND(3.512), ROUND(4.235, 2);
+--------------+----------------+
| ROUND(3.512) | ROUND(4.235, 2) |
+--------------+----------------+
| 4 | 4.24 |
+--------------+----------------+
1 row in set (0.00 sec)
数值截断
TRUNCATE(X, Y) 函数直接截取数值,不进行四舍五入。当 Y 为正数时保留相应小数位;当 Y 为负数时,将小数点左侧对应位置的数字变为 0。
-- 正常截断小数
mysql> SELECT TRUNCATE(2.567, 2), TRUNCATE(1.99, 1);
+-------------------+------------------+
| TRUNCATE(2.567, 2)| TRUNCATE(1.99, 1)|
+-------------------+------------------+
| 2.56 | 1.9 |
+-------------------+------------------+
-- 负数参数截断整数右侧
mysql> SELECT TRUNCATE(1234, -3), TRUNCATE(1234, -2);
+-------------------+-------------------+
| TRUNCATE(1234,-3) | TRUNCATE(1234,-2) |
+-------------------+-------------------+
| 1000 | 1200 |
+-------------------+-------------------+
1 row in set (0.00 sec)
判断符号
SIGN(X) 函数用于判断数字的正负性:负数返回 -1,零返回 0,正数返回 1。
mysql> SELECT SIGN(-123), SIGN(0), SIGN(223);
+------------+---------+-----------+
| SIGN(-123) | SIGN(0) | SIGN(223) |
+------------+---------+-----------+
| -1 | 0 | 1 |
+------------+---------+-----------+
1 row in set (0.00 sec)
幂运算
POW(X, Y) 与 POWER(X, Y) 功能相同,均返回 X 的 Y 次方结果。
mysql> SELECT POW(2, 3), POWER(3, 4);
+----------+------------+
| POW(2, 3)| POWER(3, 4) |
+----------+------------+
| 8 | 81 |
+----------+------------+
1 row in set (0.00 sec)
以上就是 MySQL 常见数值函数的详细内容,更多关于 MySQL 数据处理技巧的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









