SQL:更新表后的列名无效

时间:2017-11-18 16:56:45

标签: sql

如果我运行下面的代码,它会给出无效的列名。它还会在我的代码中出现问题。

ALTER TABLE #final
ADD DOB2 DATE

UPDATE #final 
SET DOB = '1980-01-01' where DOB ='NULL'

UPDATE #final 
SET DOB2 = CAST(DOB as date)

有什么理由?我已经尝试过CTRL + SHIFT + R

谢谢!

1 个答案:

答案 0 :(得分:1)

T-SQL(我认为你正在使用)批量编译行。批次由GO边界确定。问题是代码是在第一个语句执行之前编译的,因此在编译阶段不知道DOB2 - 它还没有被添加。

您可以通过添加GO

轻松解决此问题
ALTER TABLE #final ADD DOB2 DATE
GO

UPDATE #final 
    SET DOB = '1980-01-01' 
    WHERE DOB = 'NULL'

UPDATE #final 
    SET DOB2 = CAST(DOB as date);

我不确定DOB = 'NULL'应该做什么。应使用DATE数据类型存储日期。 DATE数据类型不存储字符串值,例如'NULL'。也许你打算WHERE DOB IS NULL