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

MySQL varchar存储20位数字用max函数返回整数格式报错如何解决

问题原因
  • MySQL 中 UNSIGNED BIGINT 的最大值为 18446744073709551615,你存储的 20 位数字最大值已经超过该上限,因此强转为 UNSIGNED 类型时会触发溢出报错。
  • 不使用 CAST 直接做加法运算时,MySQL 会自动将 varchar 类型的 value 转换为浮点型计算,浮点型无法精确存储超长整数,最终会以科学计数法格式返回,丢失尾部精度。
解决方案

使用支持自定义高精度的 DECIMAL 类型做转换即可解决问题,DECIMAL 可灵活设置存储长度,完全适配 20 位整数的运算需求:

-- 方案1:返回数值型结果,长度预留1位容错,避免20位全9加1后溢出
SELECT CAST(MAX(value) AS DECIMAL(21,0)) + 1 FROM card;

-- 方案2:直接返回完整数字字符串,避免后续业务端读取时自动转科学计数法
SELECT CAST(CAST(MAX(value) AS DECIMAL(21,0)) + 1 AS CHAR) FROM card;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:06:04