2017-11-18 7 views
0

以下のコードを実行すると、無効な列名が返されます。また、後で私のコードで問題が発生します。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を試しました

ありがとう!

+4

使用しているデータベースで質問にタグを付けます。 –

答えて

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を予定しています。

関連する問題