为什么SQL在varchar列中将Varchar值转换为Integer?

时间:2019-04-23 16:04:46

标签: sql sql-server-2014

我收到错误

  

将varchar值转换为数据类型int时转换失败

尝试将数据从一个表插入另一个表时。两者具有相同的表结构(要插入的表是Select中使用的表的精确副本),并且列上的数据类型相同。

INSERT INTO PS_PSOPRDEFN_BA
    SELECT * 
    FROM PSOPRDEFN

错误:

  

将varchar值'110​​00_600'转换为数据类型int时转换失败。

要插入此值的列在两个表中都是varchar(30),所以我不知道为什么SQL试图将其转换为int。任何想法都值得赞赏。

1 个答案:

答案 0 :(得分:2)

插入时,总是包括以下列:

INSERT INTO PS_PSOPRDEFN_BA ( . . . )  -- column list here
    SELECT . . .  -- column list here
    FROM PSOPRDEFN;

您有一个值,该值是分配给整数列的字符串,并且该值无法转换。

进行insert时,列在列列表中按顺序对齐,而不是按名称对齐。因此,仅具有相同的名称并不意味着代码会起作用。这些表必须具有按相同顺序定义的完全相同的列,并具有兼容的类型,才能使代码起作用。