CAST()和CONVERT()用于MySQL数据类型转换,CAST(expression AS type)符合SQL标准,CONVERT(expression, type)功能类似但语法不同,两者可互换使用但需注意类型兼容性。

在MySQL中,CAST() 和 CONVERT() 都用于数据类型的转换。它们功能相似,但在语法和使用方式上略有不同。下面详细介绍这两个函数的用法和常见场景。
1. 使用 CAST() 进行类型转换
CAST() 函数的语法如下:
CAST(expression AS type)它将 expression 转换为指定的 type。支持的主要类型包括:
- CHAR
- SIGNED [INTEGER](转为有符号整数)
- UNSIGNED [INTEGER](转为无符号整数)
- DECIMAL[(M[,D])]
- DATE
- DATETIME
- TIME
- BINARY
示例:
SELECT CAST(123.45 AS CHAR); -- 结果:'123.45'
SELECT CAST('2024-01-01' AS DATE); -- 结果:2024-01-01(日期类型)
2. 使用 CONVERT() 进行类型转换
CONVERT() 有两种用法:
- 类型转换:CONVERT(expression, type)
- 字符集转换:CONVERT(expression USING charset)
我们主要关注第一种——类型转换。其语法为:
CONVERT(expression, type)示例:
SELECT CONVERT('456', SIGNED); -- 结果:456SELECT CONVERT(NOW(), CHAR); -- 将当前时间转为字符串
SELECT CONVERT('100.5', DECIMAL(10,2)); -- 结果:100.50
3. 常见应用场景
实际开发中,类型转换常用于以下情况:
- 将字符串字段中的数字进行数学运算时,需转为数值类型
- 格式化日期或时间显示
- 比较不同类型的字段(如字符串与整数)
- 聚合函数中确保数据类型一致
举例:字符串数字求和
SELECT SUM(CAST(price_str AS DECIMAL(10,2))) FROM products;如果 price_str 是存储数字的字符串字段,必须转换后才能正确求和。
注意点:
- 转换失败时,MySQL 会返回 0 或默认值(如无效日期转为 '0000-00-00')
- 建议在转换前确保数据格式合法,避免隐式转换错误
- CHAR 和 BINARY 的转换会影响排序和比较行为
基本上就这些。CAST 和 CONVERT 可根据习惯选择,CAST 更符合 SQL 标准,CONVERT 功能稍多一点。关键是要清楚目标类型,并验证转换结果是否符合预期。










