checkpoint

自分用のIT技術系ノートです。古い情報や間違っている情報もあるので注意。

SELECT INTO句で一時テーブルを作成した場合、SELECTに空文字を指定しているとエラー(2000まで)

最近遭遇した謎なエラー。

SELECT '' AS col1 INTO #T


このようなSQLを実行すると、以下のようなエラーになりました。

列 'col1' の幅が無効です: 0。

ところが同じSQLを別のSQLサーバー(2005)で動作させると正常終了。

どうやらSQL Serverのバージョンが2000までだと上記のエラーになるようです。

ちなみに2000で上のようなSQLを実行した場合は、

SELECT CAST('' AS nvarchar(1)) AS col1 INTO #T

のように型と文字長の指定をしてあげると大丈夫です。
まあ、エラーにならなくても型の指定はちゃんとしておけってことですね。