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

带点分隔符的文本型数字转int类型报错求助

解决方法

你的问题核心是字符串里的.是千位分隔符而非小数点位,直接转换会被数据库误解析,必须先移除所有分隔符,再转成整数。

步骤1:移除所有千位分隔符

用REPLACE()函数把字符串里的.全部替换为空,得到纯数字字符串:

SELECT REPLACE(Text_table, '.', '') FROM your_table;

执行后会得到正确的纯数字序列:

1245634
2795734
14235636
1242830
17397634
16285634

步骤2:转换为INT类型

方式一:查询时临时转换

如果不需要修改原表结构,仅在查询时获取整数结果:

SELECT CAST(REPLACE(Text_table, '.', '') AS INT) AS int_value FROM your_table;

方式二:修改原列类型(永久变更)

如果要把原列直接改成INT类型,分两步执行:

  1. 先更新列内容,移除所有.:
UPDATE your_table SET Text_table = REPLACE(Text_table, '.', '');
  1. 修改列属性为INT:
ALTER TABLE your_table MODIFY COLUMN Text_table INT;

为什么之前的方法失败?

  • 直接修改列属性/用CAST(Text_table AS INT):数据库会把第一个.当作小数分隔符,只读取.前的部分(比如1.245.634会被截断为1)。
  • 用CAST(Text_table AS DECIMAL):同样把第一个.当作小数点,后续的.会导致解析错误,最终丢失部分数字。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:05:21