小编典典

为什么SQL Server无法告诉我是哪一列引起了错误

sql

我的标准很不错

INSERT INTO [table] (col1, col2, ...coln)
select * from #temp

并且出现以下错误:

消息245,级别16,状态1,行1
将varchar值’NULL’转换为数据类型int时转换失败。

我理解该错误,但想知道为什么错误消息无法识别导致问题的列。是否有一种简单的方法来查找哪个列包含顽皮的null,或者这只是一种使我看起来工作效率高的方法,而实际上我只花了30分钟查看庞大的结果集却一无所获?

编辑:感谢您的帮助,但没有人真正回答过这个问题。所有RDBMS发出类似的错误消息还是有帮助的?它的2012年……可能成千上万列的尝试和错误应该已经消失!


阅读 171

收藏
2021-03-23

共1个答案

小编典典

我将看看您如何填充临时表。您似乎正在获得’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')
2021-03-23