Mysql CAST函数的具体使用
CAST函数用于将值从一种数据类型转换为表达式中指定的另一种数据类型
语法
?1 | CAST (value AS datatype) |
AS关键字用于分隔两个参数,在AS之前的是要处理的数据,在AS之后的是要转换的数据类型
参数说明
value: 要转换的值
datatype: 要转换成的数据类型
datatype参数取值
值 | 描述 |
DATE | 将value转换成'YYYY-MM-DD'格式 |
DATETIME | 将value转换成'YYYY-MM-DD HH:MM:SS'格式 |
TIME | 将value转换成'HH:MM:SS'格式 |
CHAR | 将value转换成CHAR(固定长度的字符串)格式 |
SIGNED | 将value转换成INT(有符号的整数)格式 |
UNSIGNED | 将value转换成INT(无符号的整数)格式 |
DECIMAL | 将value转换成FLOAT(浮点数)格式 |
BINARY | 将value转换成二进制格式 |
示例
1.将值转换为DATE数据类型
?1 2 3 4 5 6 7 | -- 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数据类型
?1 2 | -- 2022-04-27 00:00:00 SELECT CAST ( '2022-04-27' AS DATETIME); |
3.将值转换为TIME数据类型
?1 2 3 4 | -- 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数据类型
?1 2 3 4 5 6 7 | -- '150' SELECT CAST (150 AS CHAR ); -- 出错Error SELECT CONCAT( 'Hello World' ,437)); -- 'Hello World437' SELECT CONCAT( 'Hello World' , CAST (437 AS CHAR )); |
5.将值转换为SIGNED数据类型
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 | -- 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数据类型
?1 2 3 4 5 6 7 8 9 10 | -- 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数据类型
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | -- 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)); |
练习案例
导入数据
?1 2 3 4 5 6 7 8 9 10 11 12 13 | DROP TABLE IF EXISTS `Material`; CREATE TABLE `Material` ( `ID` varchar (255) DEFAULT NULL , `Material` varchar (255) DEFAULT NULL , `FileName` varchar (255) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; INSERT INTO `Material` VALUES ( '1' , '07-100215-01' , 'FD03-FCZ-220430012624541.txt' ); INSERT INTO `Material` VALUES ( '2' , '07-100390-01' , 'FD03-FCZ-210318012624541.txt' ); INSERT INTO `Material` VALUES ( '3' , '07-1043-01' , 'FD03-FCZ-170430012624541.txt' ); INSERT INTO `Material` VALUES ( '4' , '07-1044-01' , 'FD03-FCZ-191225012624541.txt' ); INSERT INTO `Material` VALUES ( '5' , '07-1045-01' , 'FD03-FCZ-200601012624541.txt' ); INSERT INTO `Material` VALUES ( '6' , '07-1046-01' , 'FD03-FCZ-180705012624541.txt' ); |
Material表
Material:料号 FileName:文件名称(存储相应料号位置)
注明: ID,Material,FileName都是VARCHAR类型
FileName取值举例说明:'FD03-FCZ-220430012624541.txt',红色标注数字代表年月日,其余都取值相同(不用考虑具体含义)
问题:查询小于220401(整数类型年月日数值)的Material
?1 2 3 4 | SELECT Material FROM ( SELECT Material,( CAST ( SUBSTRING (FileName,10,6) AS SIGNED)) AS 'time' FROM Material WHERE 'time' < 220401) AS filter_material; |
解题思路
利用SUBSTRING函数截取FileName值中代表年月日的数字
由于FileName中的值为varchar类型,220401为整数类型,需要使用CAST函数进行类型转换
结果展示:
到此这篇关于Mysql CAST函数的具体使用的文章就介绍到这了,更多相关Mysql CAST函数内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/Hudas/article/details/124399908
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。