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

如何在MySQL中将字符串"3.82384E+11"转换为BIGINT?

解决Excel科学计数法ID转MySQL整数的问题

嘿,这个坑我之前踩过!Excel自动把长ID转成科学计数法的字符串,直接用CAST转整数确实会出问题——MySQL的CAST对这种科学计数法格式的字符串不买账,只会截取小数点前的部分,所以才得到3。给你几个靠谱的解决方法:

方法1:用CONVERT转高精度小数再转整数

MySQL的CONVERT函数支持把科学计数法字符串转成DECIMAL类型,之后再转成整数就没问题了。比如:

SELECT CONVERT('3.82384E+11', DECIMAL(20,0)) AS original_id;

如果需要转成无符号大整数,可以再加一层CAST:

SELECT CAST(CONVERT('3.82384E+11', DECIMAL(20,0)) AS UNSIGNED BIGINT) AS original_id;

注意这里DECIMAL(20,0)的精度要足够覆盖你的ID长度,避免溢出。

方法2:导入时直接处理(推荐)

如果是用LOAD DATA INFILE导入CSV,可以在导入过程中直接转换,不用先查再改:

LOAD DATA INFILE '/your/csv/path/file.csv'
INTO TABLE your_target_table
FIELDS TERMINATED BY ',' ENCLOSED BY '"' -- 根据你的CSV格式调整
(id_str, col2, col3) -- 先把科学计数法字符串读入字段
SET id_column = CONVERT(id_str, DECIMAL(20,0));

额外提醒:避免源头的精度损失

要注意的是,Excel转科学计数法的时候已经做了四舍五入(比如你例子里的382383816413被转成3.82384E+11,实际对应382384000000),如果要完全还原原始ID,最好从源头解决:在Excel里把ID列设置为文本格式再导出CSV,或者用文本编辑器打开CSV手动修正科学计数法的内容,这样导入时就不用处理转换问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:08:21