1

在 SQL Server 中,当我尝试使用表中的直接选择语句插入时,出现错误

Conversion failed when converting the nvarchar value 'CLONED' to data type int.

有什么办法可以看到引发此错误的特定行?

insert into manual_defect SELECT <long list of columns> from xyztable
4

2 回答 2

0

您从 xyztable 中选择的列之一是 nvarchar 类型,而 manual_defect 中的匹配列是 int。您需要在 xyztable 中找到该列中包含不会转换为 int 的内容的行。

SELECT * FROM xyztable WHERE NOT ISNUMERIC(yournvarcharcolumn + '.0e0')

IsNumeric 检查一个值(在本例中为字符串)是否可以转换为数字类型。通过在检查之前附加“.0e0”,我们确保只有整数可以工作,因为当您将其添加到末尾时,字符串格式的任何其他数字类型都不再是有效的数字类型。

如果您真的只想找到引发您引用的错误的单行,那么这将更快地工作:

SELECT * FROM xyztable WHERE yournvarcharcolumn = 'CLONED'
于 2013-04-12T15:33:05.607 回答
0

您可以使用尝试捕获并丢弃行号,但我发现快速调试的最佳方法是选择前 1000 个,然后选择 100 个并继续这样做,直到找到导致问题的行。只是一个建议

于 2013-04-12T14:54:21.480 回答