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

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4