MySQL 中的 CAST 函数详解及常见用法!
MySQL 中的 CAST 函数详解及常见用法!
作者:BirdMan98
CAST 函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL 中的 CAST 函数,感兴趣的朋友一起看看吧
MySQL 中的 CAST 函数详解
CAST 函数是 MySQL 中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型。
一、基本语法
|
1
|
CAST(expression AS type) |
或
|
1
|
CONVERT(expression, type) |
这两种语法功能相同,可以互换使用。
二、支持的数据类型
CAST 函数支持转换为以下数据类型:
BINARY[(N)]- 二进制字符串CHAR[(N)]- 字符串,可指定长度DATE- 日期DATETIME- 日期时间DECIMAL[(M[,D])]- 十进制数,可指定精度和小数位SIGNED [INTEGER]- 有符号整数UNSIGNED [INTEGER]- 无符号整数TIME- 时间JSON- JSON 格式 (MySQL 5.7.8+)
三、常见用法示例
1. 字符串转数字
|
1
2
|
SELECT CAST('123' AS SIGNED); -- 转换为有符号整数,结果为 123SELECT CONVERT('45.67', DECIMAL(5,2)); -- 转换为带2位小数的十进制数,结果为 45.67 |
2. 数字转字符串
|
1
2
|
SELECT CAST(123 AS CHAR); -- 转换为字符串,结果为 '123'SELECT CAST(123.45 AS CHAR(10)); -- 转换为长度为10的字符串,结果为 '123.45' |
3. 日期时间转换
|
1
2
|
SELECT CAST('2023-08-20' AS DATE); -- 转换为日期类型SELECT CAST(NOW() AS CHAR); -- 将当前日期时间转为字符串 |
4. 布尔值转换
|
1
2
|
SELECT CAST(1 AS UNSIGNED); -- 结果为 1SELECT CAST(0 AS SIGNED); -- 结果为 0 |
5. 二进制转换
|
1
2
|
SELECT CAST('MySQL' AS BINARY); -- 转换为二进制字符串SELECT CAST(123 AS BINARY); -- 将数字转为二进制 |
四、特殊转换案例
1. 处理 NULL 值
|
1
|
SELECT CAST(NULL AS SIGNED); -- 结果为 NULL |
2. 截断处理
|
1
2
|
SELECT CAST('123.456' AS DECIMAL(5,2)); -- 结果为 123.46 (四舍五入)SELECT CAST('123.456' AS DECIMAL(5,1)); -- 结果为 123.5 (四舍五入) |
3. 转换失败处理
|
1
2
|
SELECT CAST('abc' AS SIGNED); -- 结果为 0 (无法转换时返回0)SELECT CAST('2023-02-30' AS DATE); -- 结果为 NULL (无效日期) |
五、实际应用场景
1. 类型安全的比较
|
1
2
|
-- 避免字符串和数字的隐式转换SELECT * FROM products WHERE CAST(price AS CHAR) LIKE '12%'; |
2. 格式化输出
|
1
2
3
4
|
SELECTproduct_name,CONCAT('$', CAST(price AS DECIMAL(10,2))) AS formatted_priceFROM products; |
3. 数据迁移和清洗
|
1
2
3
|
-- 将字符串列转为数字进行计算UPDATE orders SET total = CAST(subtotal AS DECIMAL(10,2)) + CAST(tax AS DECIMAL(10,2)); |
4. 动态SQL处理
|
1
2
|
SET @str_value = '123';SELECT * FROM table WHERE id = CAST(@str_value AS SIGNED); |
六、与 CONVERT 函数的区别
CAST 和 CONVERT 函数功能基本相同,但有细微差别:
- 语法不同:
- CAST:
CAST(expr AS type) - CONVERT:
CONVERT(expr, type)或CONVERT(expr USING charset)
- CAST:
- CONVERT 额外支持字符集转换:
1
SELECTCONVERT('MySQL'USING utf8mb4);
七、性能考虑
- 索引使用:对列使用 CAST 函数通常会导致索引失效
12345
-- 不推荐 (索引失效)SELECT*FROMusersWHERECAST(ageASCHAR) ='25';-- 推荐 (可以使用索引)SELECT*FROMusersWHEREage = 25; - 隐式转换:MySQL 会自动进行某些类型转换,但显式使用 CAST 更安全明确
- 精度损失:转换时要注意可能的精度损失或数据截断
八、与其他数据库的兼容性
- CAST 函数是 SQL 标准的一部分,在大多数数据库中都支持
- 语法基本相同,但支持的数据类型可能略有差异
- MySQL 的 CAST 在某些情况下比其他数据库更宽松(如字符串转数字)
CAST 函数是 MySQL 中处理数据类型转换的强大工具,合理使用可以确保数据的一致性和查询的正确性。在需要明确控制数据类型转换的场景下,CAST 函数是必不可少的。
到此这篇关于MySQL 中的 CAST 函数详解的文章就介绍到这了。
学习资料见知识星球。
以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。
快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利!
更多技巧, www.excelbook.cn
欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;
1、价值上万元的专业的PPT报告模板。
2、专业案例分析和解读笔记。
3、实用的Excel、Word、PPT技巧。
4、VIP讨论群,共享资源。
5、优惠的会员商品。
6、一次付费只需129元,即可下载本站文章涉及的文件和软件。

