如果我运行下面的代码,它会给出无效的列名。它还会在我的代码中出现问题。
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
谢谢!
答案 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
。