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

问题描述 投票:0回答:1

我收到一个错误

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

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

INSERT INTO PS_PSOPRDEFN_BA
    SELECT * 
    FROM PSOPRDEFN

错误:

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

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

sql sql-server-2014
1个回答
2
投票

在进行插入时,始终包含列:

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

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

在执行insert时,列按列列表中的顺序排列,而不是按名称排列。因此,仅具有相同的名称并不意味着代码将起作用。这些表必须具有完全相同的列,这些列以相同的顺序定义,并且兼容的类型可以使代码工作。

© www.soinside.com 2019 - 2024. All rights reserved.