当我向一个长表中插入记录时,出现了错误:“在将varchar值'NULL'转换为数据类型int时转换失败”。 我如何确定哪一列出错了?
该表有许多字段和数百万条记录。 每次尝试在某个整数列中插入“NULL”字符串时,每个迭代需要10分钟才会失败。 我认为SQL服务器可以告诉我确切的列名:(
该表有许多字段和数百万条记录。 每次尝试在某个整数列中插入“NULL”字符串时,每个迭代需要10分钟才会失败。 我认为SQL服务器可以告诉我确切的列名:(
如果值真的为NULL
,那么就不会出现转换错误。但是,如果你有一个字符串=“NULL”,那么就会出现这个错误。
你可以做的是...
NullIf(YourValueHere, 'NULL')
NullIf
函数返回第一个参数,除非它与第二个参数相同。如果两个参数相同,NullIf
将返回 NULL
。
例如:
Select NullIf('Any Value', 'NULL')
Select NullIf('null','null')
第一个将返回'Any Value',而第二个将返回NULL
(不是'null')
从一开始逐个注释掉内容,直到不再出错。或者查看传递的值在 int 列中是否为 NULL。
它提到“varchar值'NULL'”表明您正在尝试将列的值设置为字符串“NULL”,而不是值NULL。
在语句中查找由引号括起来的单词NULL。您需要删除这些引号。
你需要修复数据吗?还是只需要将null转换为0来进行插入?
如果只需要转换,你可以使用ISNULL函数来包装那些需要转换的字符串变量。在插入到整型字段中的任何值周围添加以下内容即可。
ISNULL(col1,0)
对于每个“NULL”值,从您的Excel文档或导入到SQL的文档中删除它。只需将其留空。
“NULL”是一个字符串,因此会出现转换问题。