我正在运行一个非常标准的
INSERT INTO [table] (col1, col2, ...coln)
select * from #temp
我收到以下错误:
Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'NULL' to data type int.
我理解该错误,但想知道为什么错误消息未识别出导致问题的列。有没有一种简单的方法可以找到哪一列包含顽皮的空值,或者这只是一种策略,让我看起来工作很有效率,而实际上我只是花了 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')
关于sql - 为什么 SQL Server 不能告诉我哪一列导致了错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9878645/