CAST和CONVERT用于MySQL数据类型转换,CAST(expr AS type)符合标准SQL,CONVERT(expr, type)支持类型及字符集转换,两者可互换使用,适用于字符串与数值、日期等类型的转换,关键在于选择正确目标类型以确保转换成功。

在MySQL中,CAST 和 CONVERT 函数用于数据类型的转换。它们可以帮助你在查询过程中将一种数据类型转为另一种,比如把字符串转为数字、日期转为字符串等。虽然功能相似,但语法略有不同。
CAST函数的使用方法
CAST(expr AS type) 是标准SQL语法,兼容性较好。
- expr:要转换的值或表达式
- type:目标数据类型,如 CHAR、SIGNED、UNSIGNED、DECIMAL、DATE、DATETIME、TIME 等
常见用法示例:
将字符串转为整数:
SELECT CAST('123' AS SIGNED);将数字转为字符串:
SELECT CAST(456 AS CHAR);将时间戳字符串转为 DATETIME 类型:
SELECT CAST('2023-10-01 12:30:00' AS DATETIME);CONVERT函数的使用方法
CONVERT 支持两种形式:
- CONVERT(expr, type) —— 更像MySQL风格
- CONVERT(expr USING charset) —— 用于字符集转换
前一种与 CAST 功能基本一致:
动态WEB网站中的PHP和MySQL详细反映实际程序的需求,仔细地探讨外部数据的验证(例如信用卡卡号的格式)、用户登录以及如何使用模板建立网页的标准外观。动态WEB网站中的PHP和MySQL的内容不仅仅是这些。书中还提到如何串联JavaScript与PHP让用户操作时更快、更方便。还有正确处理用户输入错误的方法,让网站看起来更专业。另外还引入大量来自PEAR外挂函数库的强大功能,对常用的、强大的包
SELECT CONVERT(123.45, CHAR);
也可以用于日期转换:
SELECT CONVERT('2023-12-25', DATE);CONVERT 还能处理字符集转换:
SELECT CONVERT('文本' USING utf8mb4);常用数据类型说明
- CHAR:转换为字符串
- SIGNED:转换为带符号整数(INT)
- UNSIGNED:转换为无符号整数
- DECIMAL(M,D):转换为定点数,如 DECIMAL(10,2)
- DATE:仅日期部分
- DATETIME:日期和时间
- TIME:时间间隔或时间点
实际应用场景
当你需要对字符串存储的数字进行排序或计算时,类型转换就很有用。
例如,表中 price 字段是 VARCHAR 类型,但想按数值排序:
SELECT * FROM products ORDER BY CAST(price AS DECIMAL(10,2));或者比较两个不同类型字段:
SELECT * FROM logs WHERE CAST(log_time AS DATE) = '2023-09-01';基本上就这些。CAST 更符合标准SQL,适合跨数据库兼容;CONVERT 在MySQL中更灵活,尤其支持字符集操作。两者在大多数场景可以互换使用。关键是根据字段类型选择正确的目标类型,避免转换失败。









