【发布时间】:2014-02-01 12:48:49
【问题描述】:
我正在尝试运行以下命令:
INSERT INTO dbo.[PM10100] (VCHRNMBR,CRDTAMNT,DEBITAMT,DSTINDX,...)
SELECT VCHNMBR,CRDTAMNT,DEBAMNT,CONVERT(int,DSTINDX),...
FROM dbo.[rahmani]
目标表中的DSTINDX 是int 列(非空)
我收到以下错误消息:
消息 245,第 16 级,状态 1,第 1 行
将 nvarchar 值“G-PI100-5405-0000-UR”转换为数据类型 int 时转换失败。
错误是引用列DSTINDX 中的值'G-PI100-5405-0000-UR'。
我知道这是因为它的 nvarchar 试图转换为 int,关于如何在上述声明中更正此问题的任何想法?
【问题讨论】:
-
除非我遗漏了什么,否则问题是值
'G-PI100-5405-0000-UR'不是一个有效的整数,因此会出现错误。 -
线索在您尝试将
'G-PI100-5405-0000-UR'插入INT列的错误消息中。失败了。您的 select 或 insert 语句中的顺序可能有误。 -
您希望它如何更正?将
DSTINDX的类型更改为nvarchar,将数据更改为int(这将意味着数据丢失),或者以某种方式将数据拆分为多个列以便可以插入和保留(排序)? -
我无法更改目标表@alroc 中的类型。我不想破坏数据丢失。我最初尝试将包导入到表中,并意识到这是错误。然后我将它导入到一个创建的表中,并希望在其中进行选择,这样我就可以在该数据集连接到的用户界面上看到数据的结果。
-
我可以使用 TRIM 或 SUBSTRING 将值削减到 dbo.PM10100 表中的列需要的值吗?
标签: sql-server sql-server-2008 sql-insert type-conversion