乐于分享
好东西不私藏

别再瞎翻文档!MySQL数值处理,学会这4个函数就够了

别再瞎翻文档!MySQL数值处理,学会这4个函数就够了

工位上经常有刚入行的新手程序员凑过来问我:哥,MySQL 里处理数字的数学函数一大堆,我做数据统计、算金额、批量造测试数据的时候,到底该学哪几个?不想死记冷门语法,就想学最实用、天天能用的干货刚需内容!

我每次都跟他们说,真不用贪多,日常开发里 80% 和数字打交道的场景,翻来覆去就靠四个核心函数:绝对值、取整、四舍五入、随机数。不管是算差值、规整小数、处理金额,还是做随机抽样、打乱数据,全离不开它们。

今天我还是用大白话来讲,不讲虚的理论知识,所有 SQL 代码复制就能直接运行,同时把新手最容易踩的坑一一点明。

一、绝对值 ABS()

这个函数很好理解,字面意思就是把数字转换成绝对值,负数变正数,正数和数字0保持原样。平时计算数据差值、统计正负金额、对比数值偏差,用得特别多。

核心语法

ABS(数字 / 字段名)

实操案例

-- 分别测试正数、负数、0SELECT ABS(10AS 正数结果,       ABS(-15.6AS 负数结果,       ABS(0AS 零值结果;

运行结果:正数结果=10,负数结果=15.6,零值结果=0

新手避坑

1
该函数只支持数字类型,如果传入纯文本、特殊符号,会直接报错;
2
它不会修改原始数据,仅返回计算后的新数值,查询预览即可。

二、取整函数 FLOOR()、CEIL()

遇到带小数的数字,需要直接抹掉小数部分,就要用到取整函数。MySQL里最常用的是向下取整向上取整,这两个功能完全不同,也是新人最容易混淆的点。

1. 向下取整 FLOOR()

规则:不管小数部分是几,一律向更小的整数靠拢,直接舍弃小数。

语法 & 案例

SELECT FLOOR(3.14AS 正数取整,       FLOOR(5.99AS 正数取整2,       FLOOR(-2.3AS 负数取整;

运行结果:3 、5 、-3

2. 向上取整 CEIL() / CEILING()

CEIL()和 CEILING() 功能完全一致,任选其一使用即可。规则:不管小数部分是几,一律向更大的整数靠拢,直接进一位。

语法 & 案例

SELECT CEIL(3.14AS 正数取整,       CEIL(5.99AS 正数取整2,       CEIL(-2.3AS 负数取整;

运行结果:4 、6 、-2

新手避坑

1
千万不要凭直觉判断负数取整结果,正数很好理解,负数一定要单独记;
2
这两个函数不执行四舍五入,只是单纯的截断/进位,和后面的ROUND要区分开。

三、四舍五入 ROUND()

这是业务开发里的“明星函数”,算商品价格、统计报表金额、统一小数位数,基本都靠它。它会按照我们数学里的四舍五入规则取舍,还能自由指定保留几位小数。

核心语法

ROUND(数字 / 字段名, 保留小数位数)

补充:省略第二个参数时,默认保留0位小数,也就是直接四舍五入取整。

实操案例

-- 1. 省略位数,默认四舍五入取整SELECT ROUND(6.28AS 取整结果; -- 输出:6-- 2. 指定保留2位小数(常用场景:金额计算)SELECT ROUND(99.8762AS 保留两位小数; -- 输出:99.88-- 3. 保留0位,等价于直接取整SELECT ROUND(12.540AS 手动取整; -- 输出:13

新手避坑

1
如果是字符串格式的数字,建议先转为数值类型再使用ROUND,避免出现计算异常;
2
遵循标准四舍五入规则:大于等于5就进位,小于5就舍去。

四、随机数 RAND()

做测试数据、随机抽奖、数据表随机抽样、打乱展示顺序,都会用到随机数函数RAND(),灵活搭配取整函数,还能生成指定范围的随机整数,实用性拉满。

核心语法

-- 无参数:每次运行生成 0 ≤ 随机数 < 1 的小数RAND()-- 带参数 RAND(数字):设置随机种子,多次运行结果固定(极少用)RAND(固定数值)

实操案例

-- 1. 基础用法:生成0~1之间的随机小数SELECT RAND() AS 随机小数;-- 2. 实战高频:生成 1~100 之间的随机整数-- 公式:FLOOR(最小值 + RAND() * (最大值 - 最小值 + 1))SELECT FLOOR(1 + RAND() * 100AS 1到100随机整数;-- 3. 业务场景:数据表随机排序(日常抽样、随机展示)-- 示例:用户表随机取出10条数据-- SELECT * FROM user ORDER BY RAND() LIMIT 10;

新手避坑

1
RAND()每次执行结果都不一样,带固定种子RAND(5),反复运行结果不会变化;
2
大数量表不建议用 ORDER BY RAND() 排序,执行效率会很低,小表使用完全没问题。

五、函数总结(新手速记)

梳理一下四个核心函数的用法和适用场景,记牢这些就足以应对绝大多数数值处理需求:

1
ABS() 绝对值:统一正负数值,计算差值、偏差专用;
2
FLOOR() / CEIL() 取整:纯截断小数,分向下、向上两种,重点留意负数运算规则;
3
ROUND() 四舍五入:金额、报表小数规整首选,可自定义保留位数;
4
RAND() 随机数:造测试数据、随机抽样、打乱数据顺序必备,搭配取整函数生成随机整数。

做开发从来不是学得越多越好,把这些基础函数吃透、把坑避开,写SQL处理数字数据时就会得心应手。踏踏实实打磨基础,远比盲目去记各种冷门函数要靠谱得多。