我正在运行一个非常标准的
INSERT INTO [table] (col1, col2, ...coln)
select * from #temp
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
消息245,级别16,状态1,行1
转换将varchar值'NULL'转换为数据类型int时失败.
我理解错误,但想知道为什么错误消息不识别导致问题的列.有没有一种简单的方法可以找到哪个列包含顽皮的null或者这只是一个让我看起来像工作效率高的工作而我真的只花了30分钟看着一个巨大的结果集而没有到达任何地方?
编辑:感谢帮助人员,但没有人真正回答这个问题.是否所有RDBMS都会发出类似的错误消息或者更有用?它的2012年...可能数千列的试验和错误应该已经死了!
我会看看你如何填充临时表。您似乎获得了“null”值,而不是 NULL。如果此数据来自 Excel 文件,则这是一个常见问题。我通常首先通过以下方式更新来清理数据:
Update #temp
set field1 = NULL
where field1 = 'NULL'
Run Code Online (Sandbox Code Playgroud)
如果您想在同一个更新命令中完成所有操作,那么
Update #temp
set field1 = NULLIF(field1, 'NULL')
, field2 = NULLIF(field2, 'NULL')
, field3 = NULLIF(field3, 'NULL')
Run Code Online (Sandbox Code Playgroud)