MySQL 视频课 · 50 集 / 内置函数:字符串、数值、日期、流程 / P28
第 28 集 / 共 50 · 内置函数:字符串、数值、日期、流程 · 视频 p=28 · 时长 9:16
P28 28. 基础-函数-数值函数
看视频,对照阅读:在新标签打开原视频(p=28)
数值函数不多,但取整方向、精度和“金额别用浮点”这几点必须记牢。
复习模式:快速跳知识点(详解在下方各节)
复习顺序:先看“一句话理解”能否复述,再扫步骤,最后做自测;答不出时回到小例与易错。
一句话理解
数值函数对数字做取整、取余、四舍五入这类加工,常用来把计算结果修成想要的精度。
按这 4 步做
- 向上 / 向下取整:CEIL(1.2)=2,FLOOR(1.9)=1;注意负数时方向是“往大 / 往小”。
- 取余:MOD(7,3)=1,等价于 7 % 3。
- 四舍五入到指定位数:ROUND(值, 小数位数),省略位数就取整。
- 随机数:RAND() 返回 0 到 1 之间的小数。讲义 p57 的六位验证码就是三步组合:RAND 取随机 → 乘 1000000 再 ROUND 取整 → LPAD 补到 6 位。
小例
SELECT CEIL(1.2) AS 上取整,
FLOOR(1.9) AS 下取整,
MOD(7, 3) AS 余数,
ROUND(3.14159, 2) AS 两位小数,
ROUND(2.5) AS 取整;
【原创演示】全部是对常量的计算,不依赖任何表。结果一行:2、1、1、3.14、3。ROUND(2.5) 得 3,说明它按“远离 0”的方向处理 .5,而不是银行家舍入。
易错点
- 以为负数取整方向不变:CEIL(-1.2) 得 -1、FLOOR(-1.2) 得 -2,方向是“往大 / 往小”,不是“去掉小数”。
- 拿 ROUND 处理金额:浮点数只是近似值,ROUND(2.675,2) 可能得到 2.67;金额用 DECIMAL 存、按分计算。
- 在 WHERE 里对列套 ROUND 再比较:条件变成逐行现算,和直接比较原值不等价,边界行容易漏。
30 秒速记
CEIL 向上、FLOOR 向下、MOD 取余、ROUND 定位数(.5 远离 0)、RAND 随机;金额别靠浮点 ROUND。
自测(2 题,先答再展开)
自测 1:ROUND(2.5) 为什么是 3 而不是 2?
MySQL 对 .5 采用远离 0 的方向取整,2.5 进到 3;负数的 -2.5 会得到 -3。
自测 2:为什么金额不建议用 ROUND 直接处理浮点列?
浮点列存的是近似值,参与运算后可能与看上去的值略有偏差,四舍五入结果会出乎意料;用 DECIMAL 精确存再算才可控。
材料与来源
展开材料出处、讲义页码与证据等级
| 材料 | 类型 / 位置 | 支持了什么 |
|---|---|---|
| P28 原视频页(BV1Kr4y1i7ru) | 平台视频页 · P28;采样静帧 t012/t20/t30/t40/t50/t60/t70/t80/tend | 采样帧多为代码区,函数清单页未取得。 |
| MySQL 8.0 Reference:数值函数 | 官方文档 | 核对 CEIL/FLOOR/MOD/ROUND/RAND 的返回值,未逐字引用。 |
P28 标题为“数值函数”。采样帧多为代码区,未取得函数清单页;函数名与示例来自 P31 小结页(CEIL、FLOOR、MOD、RAND、ROUND)与 MySQL 8.0 数值函数文档对照,正文示例为原创,讲师演示与结果未核实;无字幕。
讲义对照:讲义 3.2 数值函数 · p56–57(公开镜像;按主题对应,切点 notexact)
- 画面静帧 9 帧,采样点 0:12–9:03 / 全片 9:16(只用于确认画面主题,不作内容边界)
- 原声字幕未取得:匿名接口字幕轨为空且需登录,未使用任何账号
等级含义:平台视频页 / 官方文档 / 课件 = 原始材料;二手整理 = 参考;推断 = 未经核实。站内补充的解释与练习会在此说明。