• ベストアンサー

smalldate型へnull値の代入

MS SQL Server2003のsmalldatetime型のカラムへnull値を代入しようとすると、必ず、1999/01/01 の値が入っています。 明示的にnullを与えても同じ結果になります。 どうしたらnull値を代入できるのでしょうか。 もちろん、カラムはnull値を許す設定になっています。

質問者が選んだベストアンサー

  • ベストアンサー
  • Kuppycat
  • ベストアンサー率50% (109/216)
回答No.3

#2です。 すみません、下のSQLだとエラー出ますね。 SELECT CASE WHEN カラム IS NULL THEN 'NULLだったよ' ELSE CAST(カラム AS VARCHAR) END FROM テーブル ならエラーにならないかな。 お試しください。

first-try
質問者

お礼

結局いろいろ試した結果、null値を与えるときに 'null'としていた為、DB側文字列として判断され、 1900/01/01という数字が入ってしまっていたようです。 'null' ではなく、null とやったら、うまくいきました。 いろいろありがとうございました。

first-try
質問者

補足

お返事遅くなりまして申し訳ございません。 上記の方法でいろいろ試したのでたのですが、当方の勉強不足で、 どのようにしたら結果がわかるのかが分かりません。 上記SQLを実行すると、リソースIDが返ってきますが、その後はどうすれば良いのでしょう?

その他の回答 (2)

  • Kuppycat
  • ベストアンサー率50% (109/216)
回答No.2

「1999/01/01」というのはどこから見た内容なのでしょうか。 データ的にはNullが入っていても、変数などに格納したさい変換されてしまっている可能性があります。 ためしに、 Select IsNull(カラム,'Nullが入ってた!') from テーブル という具合にやってみて確認してみては。

回答No.1

insertやupdateで実際に操作した時のSQLを、貼り付けできませんか? 「''」(0バイト文字)を入れているということは、ないですよね? 0バイト文字とnullは、別の値ですから。

first-try
質問者

補足

すみません、お返事遅くなりました。 update テーブル名 set カラム名="" としてはダメなのですね。 知りませんでした。 ただ、上記で初期値らしき値(1900/01/01)が入ってしまうため、 明示的にnull値を与えてみましたが、結果は同じでした。 update テーブル名 set カラム名 = null です。

関連するQ&A