类型转换 CAST / CONVERT要点
- CAST(值 AS 类型) 把值转成指定类型,如 SIGNED、DECIMAL、DATE
- CONVERT(值, 类型) 是 CAST 的另一种写法,效果一致
- 字符串转数字常用 CAST('123' AS SIGNED)
- 文本日期转成 DATE 才能做日期运算和比较
- 隐式转换会让索引失效,该显式转就别偷懒
- 转失败可能报 0 或截断,转换前先确认数据格式干净
类型转换 CAST / CONVERT示例
-- 把存成文本的销量转成数字再求和
SELECT SUM(CAST(sales_text AS SIGNED)) AS total
FROM report;
-- 文本日期转成日期类型后按天分组
SELECT DATE(created_text) AS d, COUNT(*)
FROM log
GROUP BY d;
-- 转成定点数保留两位小数
SELECT CAST('12.345' AS DECIMAL(10,2)) AS v;
避坑提醒:VARCHAR 列和 INT 列比较时 MySQL 会隐式把字符串转数字,前缀相同的 '10' 和 '10x' 都可能被当成 10,结果出乎意料。涉及比较就显式 CAST。