我的标准很不错
INSERT INTO [table] (col1, col2, ...coln) select * from #temp
并且出现以下错误:
消息245,级别16,状态1,行1 将varchar值’NULL’转换为数据类型int时转换失败。
我理解该错误,但想知道为什么错误消息无法识别导致问题的列。是否有一种简单的方法来查找哪个列包含顽皮的null,或者这只是一种使我看起来工作效率高的方法,而实际上我只花了30分钟查看庞大的结果集却一无所获?
编辑:感谢您的帮助,但没有人真正回答过这个问题。所有RDBMS发出类似的错误消息还是有帮助的?它的2012年……可能成千上万列的尝试和错误应该已经消失!
我将看看您如何填充临时表。您似乎正在获得’null’而不是NULL的值。如果此数据来自Excel文件,则这是一个常见问题。我通常先通过这种方式更新数据:
Update #temp set field1 = NULL where field1 = 'NULL'
如果要在同一更新命令中完成所有操作,则
Update #temp set field1 = NULLIF(field1, 'NULL') , field2 = NULLIF(field2, 'NULL') , field3 = NULLIF(field3, 'NULL')