文昌市网站建设_网站建设公司_字体设计_seo优化
2026/1/7 23:29:50 网站建设 项目流程
文章目录
  • 一、语法
    • 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() 就不能用于更改字符集。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询