Mysql提供了两种将值转换成指定数据类型的函数
- CONVERT函数:用于将值转换为指定的数据类型或字符集
- CAST函数 :用于将值转换为指定的数据类型。更多内容参考:Mysql cast函数
以下内容基于mysql8.0进行解说。
Mysql 8.0 convert函数官网
一、语法
1.1、转换指定数据类型
语法如下:
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.17FLOAT将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() 就不能用于更改字符集。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |