要将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));