文章目录
- 一、语法
- 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() 就不能用于更改字符集。