MySQL 中的 CAST 函数详解及常见用法

2025-07-03 17:50

本文主要是介绍MySQL 中的 CAST 函数详解及常见用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST...

MySQL 中的 CAST 函数详解

CAST 函数是 MySQL 中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型。

一、基本语法

CAST(expression AS type)

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. 字符串转数字

SELECT CAST('123' AS SIGNED);      -- 转换为有符号整数,结果为 123
SELECT CONVERT('45.67', DECIMAL(5,2)); -- 转换为带2位小数的十进制数,结果为 45.67

2. 数字转字符串

SELECT CAST(123 AS CHAR);          -- 转换为字符串,结果为 '123'
SELECTjavascript CAST(123.45 AS CHAR(10));   -- 转换为长度为10的字符串,结果为 '123.45'

3. 日期时间转换

SELECT CAST('2023-08-20' AS DATE); -- 转换为日期类型
SELECT CAST(NOW() AS CHAR);        -- 将当前日期时间转为字符串

4. 布尔值转换

SELECT CAST(1 AS UNSIGNED);        -- 结果为 1
SELECT CAST(0 AS SIGNED);          -- 结果为 0

5. 二进制转换

SELECT CAST('MySQL' AS BINARY);    -- 转换为二进制字符串
SELECT CAST(123 AS BINARY);        -- 将数字转为二进制

四、特殊转换案例

1. 处理 NULL 值

SELECT Chttp://www.chinasem.cnAST(NULL AS SIGNED);       -- 结果为 NULL

2. 截断处理

SELECT CAST('123.456' AS DECIMAL(5,2)); -- 结果为 123.46 (四舍五入)
SELECT CAST('123.456' AS DECIMAL(5,1)); -- 结果为 123.5 (四舍五入)

3. 转换失败处理

SELECT CAST('abc' AS SIGNED);      -- 结果为 0 (无法转换时返回0)
SELECT CAST('2023-02-30' AS DATE); -- 结果为 NULL (无效日期)

五、实际应用场景

1. 类型安全的比较

-- 避免字符串和数字的隐式转换
SELECT * FROM products WHERE CAST(price AS CHAR) LIKE '12%';

2. 格式化输出

SELECT 
    product_name,
    CONCAT('$', CAST(price AS DECIMALjs(10,2))) AS formatted_price
FROM products;

3. 数据迁移和清洗

-- 将字符串列转为数字进行计算
UPDATE orders 
SET total = CAST(subtotal AS DECIMAL(10,2)) + CAST(tax AS DECIMAL(10,2));

4. 动态SQL处理

SET @str_value = '123';
SELECT * FROM table WHERE id = CAST(@str_value AS SIGNED);

六、与 CONVERT 函数的区别

CAST 和 CONVERT 函数功能基本相同,但有细微差别:

  1. 语法不同:

    • CAST: CAST(expr AS www.chinasem.cntype)
    • CONVERT: CONVERT(expr, type)CONVERT(expr USING charset)
  2. CONVERT 额外支持字符集转换:

    SELECT CONVERT('MySQL' USING utf8mb4);
    

七、性能考虑

  1. 索引使用:对列使用 CAST 函数通常会导致索引失效

    -- 不推荐 (索引失效)
    SELECT * FROM users WHERE CAST(age AS CHAR) = '25';
    
    -- 推荐 (可以使用索引)
    SELECT * FROM users WHERE age = 25;
    
  2. 隐式转换:MySQL 会自动进行某些类型转换,但显式使用 CAST 更安全明确

  3. 精度损失:转换时要注意可能的精度损失或数据截断

八、与其他数据库的兼容性

  1. CAST 函数是 SQL 标准的一部分,在大多数数据库中都支持
  2. 语法基本相同,但支持的数据类型可能略有差异
  3. MySQL 的 CAST 在某些情况下比其他数据库更宽松(如字符串转数字)

CAST 函数是 MySQL 中处理数据类型转换的强大工具,合理使用可以确保数据的一致性和查询的正确性。在需要明确控制数据类型转换的场景下,CAST 函数是必不可少的。

到此这篇关于MySQL 中的 CAST 函数详解的文章就介绍到这了,更多相关MySQL CAST 函数内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于MySQL 中的 CAST 函数详解及常见用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1155291

相关文章

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具

Mysql实现范围分区表(新增、删除、重组、查看)

《Mysql实现范围分区表(新增、删除、重组、查看)》MySQL分区表的四种类型(范围、哈希、列表、键值),主要介绍了范围分区的创建、查询、添加、删除及重组织操作,具有一定的参考价值,感兴趣的可以了解... 目录一、mysql分区表分类二、范围分区(Range Partitioning1、新建分区表:2、分

MySQL 定时新增分区的实现示例

《MySQL定时新增分区的实现示例》本文主要介绍了通过存储过程和定时任务实现MySQL分区的自动创建,解决大数据量下手动维护的繁琐问题,具有一定的参考价值,感兴趣的可以了解一下... mysql创建好分区之后,有时候会需要自动创建分区。比如,一些表数据量非常大,有些数据是热点数据,按照日期分区MululbU

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

MySQL中查找重复值的实现

《MySQL中查找重复值的实现》查找重复值是一项常见需求,比如在数据清理、数据分析、数据质量检查等场景下,我们常常需要找出表中某列或多列的重复值,具有一定的参考价值,感兴趣的可以了解一下... 目录技术背景实现步骤方法一:使用GROUP BY和HAVING子句方法二:仅返回重复值方法三:返回完整记录方法四:

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客