在SQL Server中,当我尝试使用表中的直接select语句插入时,出现错误
Conversion failed when converting the nvarchar value 'CLONED' to data type int.
有什么方法可以看到引发此错误的特定行?
insert into manual_defect SELECT <long list of columns> from xyztable
答案 0 :(得分:0)
您可以使用try catch并抛出行号,但我发现快速调试的最佳方法是选择前1000个,然后选择100并继续这样做直到找到导致问题的行。只是一个建议
答案 1 :(得分:0)
您从xyztable中选择的列之一是nvarchar类型,manual_defect中的匹配列是int。您需要在xyztable中找到行,其中该列中包含的某些行不会转换为int。
SELECT * FROM xyztable WHERE NOT ISNUMERIC(yournvarcharcolumn + '.0e0')
IsNumeric检查一个值(在这种情况下是一个字符串)是否可以转换为数字类型。通过在检查之前附加“.0e0”,我们确保只有整数才能起作用,因为当你将它添加到结尾时,字符串格式的任何其他数字类型都不会成为有效的数字类型。
如果你真的只想找到抛出你引用的错误的单行,那么这样可以更快地运行:
SELECT * FROM xyztable WHERE yournvarcharcolumn = 'CLONED'