You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中使用CAST/CONVERT将数值转为INT类型报错如何解决

问题根因

MySQL的类型转换函数本身就不支持直接传INT作为目标类型,你写的几个语句全不符合语法要求,必然执行失败:

  • select cast (int, 12.345);:CAST函数语法顺序完全写反,固定语法是CAST(待转换值 AS 目标类型),没有先写类型再写值的用法
  • select cast 12.345 as int;:第一CAST的参数必须放在括号里,第二INT不是CAST支持的类型关键字
  • select convert (12.345, int);:INT同样不是CONVERT支持的直接类型关键字
正确写法

MySQL里转整数有几种成熟写法,按需选择即可:

标准类型转换写法

不管用CAST还是CONVERT,整数对应的目标类型关键字是SIGNED(有符号整数)或者UNSIGNED(无符号整数),不是INT:

-- CAST写法,执行结果为12
SELECT CAST(12.345 AS SIGNED);
-- 如果要无符号整数就把SIGNED换成UNSIGNED
SELECT CAST(12.345 AS UNSIGNED);

-- CONVERT写法,执行结果为12
SELECT CONVERT(12.345, SIGNED);
SELECT CONVERT(12.345, UNSIGNED);

取整函数写法(非强制类型转换场景用)

如果只是要拿到整数结果,不需要严格走类型转换逻辑,直接用取整函数更方便:

-- 向下取整,小数部分直接舍弃,正数场景和转整数结果一致
SELECT FLOOR(12.345);
-- 四舍五入取整
SELECT ROUND(12.345);
-- 指定位数截断,第二个参数传0就是截断所有小数位
SELECT TRUNCATE(12.345, 0);

补充说明:如果待转换的是字符串格式的数字,上述类型转换写法也能正常识别;如果字符串完全不含合法数字前缀,转换结果会返回0。

内容的提问来源于stack exchange,提问作者Eyal David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 10:03:43