要将VARCHAR转换为INT,我们可以使用cast()
MySQL中的函数。这是cast()
函数的语法。
cast(anyValueasdataType)
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转换成二进制格式
示例:
hl_data_gis_category表中的id最大值为17.
使用以下语法将varchar转换为int。
SELECTCAST(yourColumnNameASanyDataType)FROMyourTableName;
应用以上语法将varchar转换为int,找出最大值。
SELECTmax(cast(id AS UNSIGNED))FROMhl_data_gis_category
以下是输出。
查看上面的输出,我们将varchar更改为int。
延伸:
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));
|