在 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
在 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
您从 xyztable 中选择的列之一是 nvarchar 类型,而 manual_defect 中的匹配列是 int。您需要在 xyztable 中找到该列中包含不会转换为 int 的内容的行。
SELECT * FROM xyztable WHERE NOT ISNUMERIC(yournvarcharcolumn + '.0e0')
IsNumeric 检查一个值(在本例中为字符串)是否可以转换为数字类型。通过在检查之前附加“.0e0”,我们确保只有整数可以工作,因为当您将其添加到末尾时,字符串格式的任何其他数字类型都不再是有效的数字类型。
如果您真的只想找到引发您引用的错误的单行,那么这将更快地工作:
SELECT * FROM xyztable WHERE yournvarcharcolumn = 'CLONED'
您可以使用尝试捕获并丢弃行号,但我发现快速调试的最佳方法是选择前 1000 个,然后选择 100 个并继续这样做,直到找到导致问题的行。只是一个建议