当前位置: 首页 > news >正文

Mysql cast函数、cast用法、字符串转数字、字符串转日期、数据类型转换

文章目录

  • 一、语法
  • 二、示例
    • 2.1、复杂示例
  • 三、cast与convert的区别

CAST 函数是 SQL 中的一种类型转换函数,它用于将一个数据类型转换为另一个数据类型,这篇文章主要介绍了Mysql中Cast()函数的用法,需要的朋友可以参考下。

Mysql提供了两种将值转换成指定数据类型的函数

  • CONVERT函数:用于将值转换为指定的数据类型或字符集。更多内容参考:Mysql convert函数
  • CAST函数 :用于将值转换为指定的数据类型。更多内容参考:Mysql cast函数

以下内容基于mysql8.0进行讲解。

Mysql 8.0 cast函数官网

一、语法

# 语法如下
CAST(expr AS type [ARRAY])示例:将值转换为日期数据类型:
SELECT CAST('2021-08-29' AS DATE);

参数说明:

参数描述
expr必填。要转换的值、列名
type必填。要转换成的数据类型。mysql版本不同,支持的数据类型不同,使用时需注意。

数据类型支持如下

类型描述备注
DATE将 value 转化为 DATE 类型。 格式: “YYYY-MM-DD”
DATETIME将 value 转化为 DATETIME 类型。格式: “YYYY-MM-DD HH:MM:SS”
DECIMAL[(M[,D])]将 value 转化为 DECIMAL 类型。使用可选的 M 和 D 参数指定最大位数(M)和小数点(D)后的位数
TIME将 value 转化为 TIME 类型。格式: “HH:MM:SS”
CHAR将 value 转化为 CHAR 类型 (固定长度的字符串)
NCHAR将 value 转化为 NCHAR (类似 CHAR, 但生成一个具有国家字符集的字符串)
SIGNED将 value 转化为 SIGNED (有符号的 64 位整数)
UNSIGNED将 value 转化为 UNSIGNED (无符号 64 位整数)
BINARY将 value 转化为 BINARY (二进制字符串)
DOUBLE将value转化为DOUBLE类型Added in MySQL 8.0.17
FLOAT将value转化为FLOAT类型 。Added in MySQL 8.0.17

更多内容参考官网:Mysql 8.0 cast函数官网

二、示例

1.将值转换为DATE数据类型

-- 2017-08-29
SELECT CAST('2017-08-29' AS DATE); -- 2022-04-27 15:42:19
SELECT NOW();
-- 2022-04-27
SELECT CAST(NOW() AS DATE);

2.将值转换为DATETIME数据类型

-- 2022-04-27 00:00:00
SELECT CAST('2022-04-27' AS DATETIME); 	

3.将值转换为TIME数据类型

-- 14:06:10
SELECT CAST('14:06:10' AS TIME); 
-- 14:06:10
SELECT CAST('2022-04-27 14:06:10' AS TIME);

4.将值转换为CHAR数据类型

-- '150'
SELECT CAST(150 AS CHAR); -- 'Hello World437'
SELECT CONCAT('Hello World',CAST(437 AS CHAR));	

5.将值转换为SIGNED数据类型

-- 5
SELECT CAST('5.0' AS SIGNED);
-- 2
SELECT (1 + CAST('3' AS SIGNED))/2;
-- -5
SELECT CAST(5-10 AS SIGNED); 
-- 6
SELECT CAST(6.4 AS SIGNED);
-- -6
SELECT CAST(-6.4 AS SIGNED);
-- 7
SELECT CAST(6.5 AS SIGNED); 
-- -7
SELECT CAST(-6.5 AS SIGNED);	

6.将值转换为UNSIGNED数据类型

-- 5
SELECT CAST('5.0' AS UNSIGNED);
-- 6
SELECT CAST(6.4 AS UNSIGNED);
-- 0
SELECT CAST(-6.4 AS UNSIGNED);
-- 7
SELECT CAST(6.5 AS UNSIGNED); 
-- 0
SELECT CAST(-6.5 AS UNSIGNED);

7.将值转换为DECIMAL数据类型

-- 9
SELECT CAST('9.0' AS DECIMAL);-- DECIMAL(数值精度,小数点保留长度)
-- DECIMAL(10,2)可以存储最多具有8位整数和2位小数的数字
-- 精度与小数位数分别为10与2
-- 精度是总的数字位数,包括小数点左边和右边位数的总和
-- 小数位数是小数点右边的位数
-- 9.50
SELECT CAST('9.5' AS DECIMAL(10,2));
-- 99999999.99
SELECT CAST('1234567890.123' AS DECIMAL(10,2));-- 220.232
SELECT CAST('220.23211231' AS DECIMAL(10, 3));
-- 220.232
SELECT CAST(220.23211231 AS DECIMAL(10, 3));

2.1、复杂示例

1.如下,按文件名中的数字进行排序

让我们先看几个 file_name的示例值:

  • 中文_1.mp4
  • 中文_12.mp4
  • 中文_2.mp4
  • 中文_10.mp4

数据准备

CREATE TABLE `test1` (`id` int NOT NULL PRIMARY KEY AUTO_INCREMENT comment '主键id',`file_name` varchar(10)  DEFAULT NULL COMMENT '文件名'
) ENGINE=InnoDB AUTO_INCREMENT=1;insert into test1(file_name) values
('中文_1.txt'),
('中文_2.txt'),
('中文_10.txt'),
('中文_12.txt');

使用 REGEXP_SUBSTR 函数提取并排序
在MySQL 8.0及以上版本中,我们可以使用 REGEXP_SUBSTR() 函数来提取字符串中的数字部分。这个函数允许我们使用正则表达式来指定我们想要匹配的模式。在这个例子中,我们使用正则表达式 \d+ 来匹配一个或多个数字。

以下是完整的SQL查询,用于实现按数字排序:

SELECT *
FROM test1
WHERE file_name LIKE '%中文%'
ORDER BY CAST(REGEXP_SUBSTR(file_name , '\\d+') AS UNSIGNED);

这条SQL语句做了以下几件事:

  • WHERE original_name LIKE '%中文%':筛选出所有文件名包含“中文”的记录。
  • REGEXP_SUBSTR(original_name, '\\d+'):从 original_name 中提取第一组连续的数字。
  • CAST(... AS UNSIGNED):将提取出的字符串转换成无符号整数,以便按数字进行排序。

三、cast与convert的区别

CAST() 和 CONVERT() 都可以更改 MySQL 中的数据类型。主要区别在于 CONVERT() 还可以将数据的字符集转换为另一个字符集。CAST() 就不能用于更改字符集。

相关文章:

Mysql cast函数、cast用法、字符串转数字、字符串转日期、数据类型转换

文章目录 一、语法二、示例2.1、复杂示例 三、cast与convert的区别 CAST 函数是 SQL 中的一种类型转换函数,它用于将一个数据类型转换为另一个数据类型,这篇文章主要介绍了Mysql中Cast()函数的用法,需要的朋友可以参考下。 Mysql提供了两种将值转换成指…...

微信小程序开发之组件复用机制

新建复用文件,另外需要注册 behavior 例如: 在behavior.js文件中写入方法,并向外暴露出去 写法一: module.exportsBehavior({data: {num: 1},lifetimes: {created() {console.log(1);}} })写法二: const behavior …...

数据结构--线性表

数据结构分类 集合 线性结构(一对一) 树形结构(一对多) 图结构(多对多) 数据结构三要素 1、逻辑结构 2、数据的运算 3、存储结构(物理结构) 线性表分类 1、顺序表 2、链表 3、栈 4、队列 5、串 线性表--顺序表 顺序表的特点 顺序表的删除和插入…...

深入探针:PHP与DTrace的动态追踪艺术

标题:深入探针:PHP与DTrace的动态追踪艺术 在高性能的PHP应用开发中,深入理解代码的执行流程和性能瓶颈是至关重要的。DTrace,作为一种强大的动态追踪工具,为开发者提供了对PHP脚本运行时行为的深入洞察。本文将详细介…...

黑龙江日报报道第5届中国计算机应用技术大赛,赛氪提供赛事支持

2024年7月17日,黑龙江日报、极光新闻对在哈尔滨市举办的第5届中国计算机应用技术大赛全国总决赛进行了深入报道。此次大赛由中国计算机学会主办,中国计算机学会计算机应用专业委员会与赛氪网共同承办,吸引了来自全国各地的顶尖技术团队和选手…...

【计算机网络】LVS四层负载均衡器

https://mobian.blog.csdn.net/article/details/141093263 https://blog.csdn.net/weixin_42175752/article/details/139966198 《高并发的哲学原理》 (基本来自本书) 《亿级流量系统架构设计与实战》 LVS 章文嵩博士创造 LVS(IPVS) 章⽂嵩发…...

Java 守护线程练习 (2024.8.12)

DaemonExercise package DaemonExercise20240812;public class DaemonExercise {public static void main(String[] args) {// 守护线程// 当普通线程执行完毕之后,守护线程没有继续执行的必要,所以说会逐步关闭(并非瞬间关闭)//…...

C#小桌面程序调试出错,如何解决??

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…...

Seatunnel Mysql数据同步到Mysql

环境 mysql-connector-java-8.0.28.jar、connector-cdc-mysql 配置 env {# You can set SeaTunnel environment configuration hereexecution.parallelism 2job.mode "STREAMING"# 10秒检查一次,可以适当加大这个值checkpoint.interval 10000#execu…...

Java Web —— 第五天(请求响应1)

postman Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件 作用:常用于进行接口测试 简单参数 原始方式 在原始的web程序中,获取请求参数,需要通过HttpServletRequest 对象手动获 http://localhost:8080/simpleParam?nameTom&a…...

【LLMOps】手摸手教你把 Dify 接入微信生态

作者:韩方圆 "Dify on WeChat"开源项目作者 概述 微信作为最热门即时通信软件,拥有巨大的流量。 微信友好的聊天窗口是天然的AI应用LUI(Language User Interface)/CUI(Conversation User Interface)。 微信不仅有个人微信,同时提供…...

Ftrans文件摆渡方案:重塑文件传输与管控的科技先锋

一、哪些行业会用到文件摆渡相关方案 文件摆渡相关的产品和方案通常用于需要在不同的网络、安全域、网段之间传输数据的场景,主要是一些有核心数据需要保护的行业,做了网络隔离和划分。以下是一些应用比较普遍的行业: 金融行业:…...

LaTeX中的除号表示方法详解

/除号 LaTeX中的除号表示方法详解1. 使用斜杠 / 表示除号优点缺点 2. 使用 \frac{} 表示分数形式的除法优点缺点 3. 使用 \div 表示标准除号优点缺点 4. 使用 \over 表示分数形式的除法优点缺点 5. 使用 \dfrac{} 和 \tfrac{} 表示大型和小型分数优点缺点 总结 LaTeX中的除号表…...

DID、DID文档、VC、VP分别是什么 有什么关系

DID(去中心化身份) 定义:DID 是一种去中心化的唯一标识符,用于表示个体、组织或设备的身份。DID 不依赖于中央管理机构,而是由去中心化网络(如区块链)生成和管理。 用途:DID 允许用…...

网络安全应急响应

前言\n在网络安全领域,有一句广为人知的话:“没有绝对的安全”。这意味着任何系统都有可能被攻破。安全攻击的发生并不可怕,可怕的是从头到尾都毫无察觉。当系统遭遇攻击时,企业的安全人员需要立即进行应急响应,以将影…...

Qt数据和视图分离——中MCV和MVVM

智能指针 一、背景知识二、命令式编程 vs 声明式编程2.1 命令式编程(Imperative Programming)2.2 声明式编程(Declarative Programming) 三、 MVC(Model-View-Controller)3.1 模型(Model)3.2 视图&#xff…...

重定义变量类型:如#define FLOAT float和typedef float FLOAT的区别

在 C 或 C 中, #define 和 typedef 都可以用来为类型或值创建别名,但它们之间存在一些关键的区别: 预处理指令 ( #define ): #define 是预处理器指令,用于定义宏。 当编译器处理源代码时,预处理器会先运行&#…...

Qt 使用阿里矢量图标库

前言 阿里矢量图标库非常好用,里面有各种丰富的图标,完全免费,还支持自定义图标,还可以将图标打包到一个项目中,使用起来非常方便。 第一步: 打开阿里矢量图标库 第二步: 搜索图标&#x…...

仓颉语言运行时轻量化实践

杨勇勇 华为语言虚拟机实验室架构师,目前负责仓颉语言静态后端的开发工作 仓颉语言运行时轻量化实践 仓颉Native后端(CJNative)是仓颉语言的高性能、轻量化实现。这里的“轻量化”意指仓颉程序运行过程中占用系统资源(内存、CPU等…...

深入理解Python中的subprocess模块

目录 subprocess模块简介常用函数执行外部命令管道通信子进程管理错误处理实际应用示例最佳实践 subprocess模块简介 subprocess模块是Python标准库的一部分,提供了一个跨平台的方法来生成新进程、连接其输入/输出/错误管道,并获取其返回码。该模块旨…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...

Appium下载安装配置保姆教程(图文详解)

目录 一、Appium软件介绍 1.特点 2.工作原理 3.应用场景 二、环境准备 安装 Node.js 安装 Appium 安装 JDK 安装 Android SDK 安装Python及依赖包 三、安装教程 1.Node.js安装 1.1.下载Node 1.2.安装程序 1.3.配置npm仓储和缓存 1.4. 配置环境 1.5.测试Node.j…...

FTXUI::Dom 模块

DOM 模块定义了分层的 FTXUI::Element 树,可用于构建复杂的终端界面,支持响应终端尺寸变化。 namespace ftxui {...// 定义文档 定义布局盒子 Element document vbox({// 设置文本 设置加粗 设置文本颜色text("The window") | bold | color(…...

运行vue项目报错 errors and 0 warnings potentially fixable with the `--fix` option.

报错 找到package.json文件 找到这个修改成 "lint": "eslint --fix --ext .js,.vue src" 为elsint有配置结尾换行符,最后运行:npm run lint --fix...

Spring是如何实现无代理对象的循环依赖

无代理对象的循环依赖 什么是循环依赖解决方案实现方式测试验证 引入代理对象的影响创建代理对象问题分析 源码见:mini-spring 什么是循环依赖 循环依赖是指在对象创建过程中,两个或多个对象相互依赖,导致创建过程陷入死循环。以下通过一个简…...

Monorepo架构: 项目管理模式对比与考量

关于 monorepo 相关概念及项目管理模式 在软件开发中,尤其是前端项目,我们会涉及到不同的项目管理模式,这里先介绍几个重要的概念“monorepo”是当前较为热门的一种项目管理方式,虽然很多人可能听说过,但可能在实际项…...

成工fpga(知识星球号)——精品来袭

(如需要相关的工程文件请关注知识星球:成工fpga,https://t.zsxq.com/DMeqH,关注即送200GB学习资料,链接已置顶!) 《孩子都能学会的FPGA》系列是成工完成的第一个系列,也有一年多的时…...