sql - 为什么 SQL Server 不能告诉我哪一列导致了错误

标签 sql sql-server

我正在运行一个非常标准的

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/

相关文章:

sql - 低内存销毁操作

c# - 需要在C#中获取SQL Server "PRINT"值

sql-server - Azure SQL DW 行存储与列存储

sql-server - 如何对父节点的子节点进行唯一编号

mysql - 将 SQL 数据库导入实时服务器,表丢失

php - fatal error : Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in

sql - SQL 中 Case 列的乘法

sql - 替换文本表达式中的多个 ID

mysql - 用于传输数据库更改的工具?

sql-server - SQL Server - 尝试将列转换为 XML 失败