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

embedded/2025/2/27 17:16:06/
文章目录
  • 一、语法
    • 1.1、转换指定数据类型
    • 1.2、转换指定字符集
  • 二、示例
  • 三、cast与convert的区别

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

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

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

Mysql 8.0 convert函数官网

一、语法

1.1、转换指定数据类型

语法如下:

CONVERT(expr,type)

convert(expr,type)语法与 CAST(expr AS type)是等效的,所以支持的数据类型也是一致的,可以直接参考Mysql cast函数

参数说明:

参数

描述

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.2、转换指定字符集

CONVERT函数用于将字符串expr的字符集变成transcoding_name

语法结构

CONVERT(expr USING transcoding_name)
  • expr: 要转换的值

  • transcoding_name: 要转换成的字符集

    – utf8mb4
    SELECT CHARSET(‘ABC’);
    – gbk
    SELECT CHARSET(CONVERT(‘ABC’ USING gbk));
    SELECT CONVERT(‘abc’ USING utf8mb4);

二、示例

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

-- 2022-05-25
SELECT CONVERT('2022-05-25', DATE);
-- 2022-05-25 17:58:48
SELECT NOW();
-- 2022-05-25
SELECT CONVERT(NOW(), DATE);

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

-- 2022-05-25 00:00:00
SELECT CONVERT('2022-05-25', DATETIME);

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

-- 14:06:10
SELECT CONVERT('14:06:10', TIME);
-- 2022-05-25 17:25:12
SELECT NOW();
-- 17:25:12
SELECT CONVERT(NOW(), TIME);

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

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

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

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

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

-- 5
SELECT CONVERT('5.0', UNSIGNED);
-- 6
SELECT CONVERT(6.4, UNSIGNED);
-- 0
SELECT CONVERT(-6.4, UNSIGNED);
-- 7
SELECT CONVERT(6.5, UNSIGNED);
-- 0
SELECT CONVERT(-6.5, UNSIGNED);

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

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

三、cast与convert的区别

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


http://www.ppmy.cn/embedded/167582.html

相关文章

电脑开机无显示的故障原因

硬件问题 电源故障 电源供应不足:电源功率无法满足电脑硬件的需求,可能导致硬件无法正常启动,尤其是在电脑配置较高且电源功率较低的情况下容易出现。电源损坏:电源内部的电路元件可能出现故障,如电容爆浆、短路等&…

Linux相关知识(文件系统、目录树、权限管理)和Shell相关知识(字符串、数组)

仅供自学,请去支持javaGuide原版书籍。 1.Linux 1.1.概述 Linux是一种类Unix系统。 严格来讲,Linux 这个词本身只表示 Linux内核,单独的 Linux 内核并不能成为一个可以正常工作的操作系统。所以,就有了各种 Linux 发行版&#…

linux--多进程开发(5)--进程间通信(IPC)、linux间通信的方式、管道

进程间通讯概念 每两个进程之间都是独立的资源分配单元,不同进程之间不能直接访问另一个进程的资源。 但不同的进程需要进行信息的交互和状态的传递等,因此需要进程间通信(IPC,inter processes cimmunication) 进程通信的目的: …

BCT计算图论属性

本文翻译了BCT官网给出的一些指导,同时包含本人在计算图论属性过程中的一些思考 目前看到的教程中,大部分都只用一个确定的稀疏度来计算图论属性 我更倾向于gretna那种采用稀疏度序列来计算AUC曲线下面积衡量不同稀疏度下组间差异的方法 大部分图论属性都与网络稀疏度取值…

智慧城市招标进入“资质严审期”!谁主数字孪生技术话语权?

2025年1月,《全国统一大市场建设指引》明确要求招标项目需杜绝“逐利性执法”,技术资质审查更趋透明化。与此同时,住建部《危险性较大的分部分项工程专项施工方案严重缺陷清单》将数字孪生平台的数据治理能力纳入工程验收标准。在此背景下&am…

JVM 深入理解与性能优化

JVM(Java Virtual Machine,Java 虚拟机)是 Java 代码运行的核心,它负责 内存管理、类加载、字节码执行、垃圾回收(GC)和 JIT 编译。理解 JVM 有助于优化 Java 应用的性能,提高调试和排错能力。 …

34.Java 阻塞队列(阻塞队列架构、阻塞队列分类、阻塞队列核心方法)

一、阻塞队列概述 java.util.concurrent 包下的 BlockingQueue 接口很好的解决了多线程中如何高效安全传输数据的问题,可以使用这些高效并且线程安全的队列类快速搭建高质量的多线程程序 阻塞队列通过一个共享的队列,使得数据由队列的一端输入&#xff…

Java HTTP 请求的四种实现方式:Apache HttpClient、OkHttp、WebClient 与 Java 11 HttpClient

目录 1.使用Java11内置的HttpClient 2.使用OkHttp 3.使用SpringWebClient 4.使用ApacheHttpClient5.x 在现代Java开发中,HttpClient和PostMethod是较旧的ApacheHttpClient3.x的API。推荐使用更现代的技术来替代这些代码,例如Java11内置的HttpClient或…