繁体   English   中英

选择插入时出错的行

[英]select row with error during insert

在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

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

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

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

IsNumeric检查在这种情况下将是字符串的值是否可以转换为数字类型。 通过在检查前添加“ .0e0”,我们确保仅整数可以使用,因为在将字符串格式添加到末尾时,字符串格式的任何其他数字类型都将不再是有效的数字类型。

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

SELECT * FROM xyztable WHERE yournvarcharcolumn = 'CLONED'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM