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

SQL执行insert报错:varchar转int失败,已设字段为varchar原因排查

报错原因解析

Conversion failed when converting the varchar value 'apple' to data type int

核心问题

该报错和你定义为varchar类型的FieldC无关,问题出在插入值和表列的顺序、类型不匹配:
你创建的临时表##temp列定义顺序为:

  • 第1列FieldA:numeric(20,10) 数值类型
  • 第2列FieldB:numeric(20,10) 数值类型
  • 第3列FieldC:varchar(255) 字符串类型

你执行的INSERT语句没有指定插入列,数据库会默认按表定义的列顺序匹配你输入的值:

insert into ##temp values(1.1, 2.1, 3.1), (4.1, 5.1, 6.1), ('apple', 'pear', 'orange')

第三组插入值('apple', 'pear', 'orange')按顺序对应时:

  1. 第一个值apple要插入到数值类型的FieldA列
  2. 数据库会尝试自动将字符串apple转换为数值类型,因数据库隐式类型转换优先级规则,会先尝试转int再匹配numeric类型,转换失败就触发了该报错

补充说明

前两组插入值里的3.1、6.1虽然是数值,但因为对应到字符串类型的FieldC,数值可以隐式转换为字符串,所以不会触发报错。

修复示例

如果第三组的三个字符串是要分别插入三个列,需要调整前两列的输入为合法数值;如果三个字符串都是要存入FieldC,可以指定插入列:

-- 仅插入FieldC列的示例
insert into ##temp(FieldC) values('apple'), ('pear'), ('orange')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:09:03