首页 > 解决方案 > UPDATE [COLUMN] SET NULL WHERE [COLUMN] = '' - 消息 8114,级别 16,状态 5 将数据类型 varchar 转换为数字时出错

问题描述

我在 SQL Server 2016 中有一个临时表,将所有列导入为varchar.

如果我在 column1 上运行以下UPDATE语句,则第一次执行时不会出现错误。我在第二次执行时收到以下错误:

消息 8114,级别 16,状态 5,
将数据类型 varchar 转换为数字时出错

UPDATE在后续语句执行中执行相同的语句以将 column2 上的空白或“”更新为 NULL 时,我没有收到任何错误。

column1 中是否还有其他内容随后会收到我需要删除的错误?

如果我执行 UPDATE 语句并将结果复制到 Column1 的记事本,则没有其他显示。

UPDATE [Database].[dbo].[Table] 
SET [Column1] = NULL 
WHERE [Column1] = '' 

我仍然得到错误。

UPDATE [Database].[dbo].[Table] 
SET [Column2] = NULL 
WHERE [Column2] = '' 

在这里,没有错误。

之后更改数据类型不会产生错误。因此,这不会影响导入另一个表。但我想了解我在UPDATE陈述中做错了什么:

ALTER TABLE [Database].[dbo].[Column1] 
    ALTER COLUMN [Column1] DECIMAL(38,2)

ALTER TABLE [Database].[dbo].[Column2] 
    ALTER COLUMN [Column2] DATETIME

命令成功完成。

标签: sql-server

解决方案


推荐阅读