プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (3件)

insertやupdateで実際に操作した時のSQLを、貼り付けできませんか?



「''」(0バイト文字)を入れているということは、ないですよね?
0バイト文字とnullは、別の値ですから。

この回答への補足

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

補足日時:2007/05/27 10:19
    • good
    • 0

「1999/01/01」というのはどこから見た内容なのでしょうか。


データ的にはNullが入っていても、変数などに格納したさい変換されてしまっている可能性があります。
ためしに、
Select IsNull(カラム,'Nullが入ってた!') from テーブル
という具合にやってみて確認してみては。
    • good
    • 0

#2です。


すみません、下のSQLだとエラー出ますね。

SELECT CASE WHEN カラム IS NULL THEN 'NULLだったよ' ELSE CAST(カラム AS VARCHAR) END FROM テーブル

ならエラーにならないかな。
お試しください。

この回答への補足

お返事遅くなりまして申し訳ございません。
上記の方法でいろいろ試したのでたのですが、当方の勉強不足で、
どのようにしたら結果がわかるのかが分かりません。

上記SQLを実行すると、リソースIDが返ってきますが、その後はどうすれば良いのでしょう?

補足日時:2007/06/11 12:53
    • good
    • 0
この回答へのお礼

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

いろいろありがとうございました。

お礼日時:2007/06/12 12:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!