[英]Insert into select statement returns error: “ SQL Anywhere Error -185: SELECT returns more than one row”
[英]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.