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

ASP(VBScript)でSQLサーバにINSET INTO文を使ってデータを格納しているのですが、日付の部分がNULLの時、「1900/1/1」が入ってしまいます。
そのまま、空白を入れる方法はどうやったらよろしいのでしょうか?

TABLE1の内容は
番号|内容|日付です。

INSERT INTO TABLE1 VALUES ( 1, 'あいう', '')

結果
1|あいう|1900/1/1

A 回答 (3件)

あとは、プログラムの書き方次第ですね、、、




If hensu=Null Or hensu="" Then
dt = "NULL"
Else
dt = "'" & hensu & "'"
End IF

E_SQL = "INSERT INTO TABLE1 VALUES & _
"( 1,'あいう', " & dt& ")"
の様に書きます。
    • good
    • 4
この回答へのお礼

ありがとうございました。
お手をわずらわせてすみません。
参考にさせていただきます。

お礼日時:2001/06/27 20:42

日付型に 空白(ブランク)はダメです。


NullならOkですが。ということでNullにするということで回答します。

空白 =>'' じゃなくて
Null =>Null にしてみたら?

ASPは、Accessでしかやったことないですけど


VBでSqlServerやったときは、たしかに 
INSERT INTO TABLE1 VALUES ( 1, 'あいう', '')
で 1900/1/1 になりました。
なんで

INSERT INTO TABLE1 VALUES ( 1, 'あいう', Null)

でどうですか?

注意点は 空白('')だったら Nullに置き換えが必要になります。
    • good
    • 1
この回答へのお礼

ありがとうございます。置き換えを考えてみます。

お礼日時:2001/06/27 18:28

空白を入れることは不可能です。


時刻型(datetime型)のフィールドへ、空白(' ')
という文字を代入することはできません。
代入しようとしても無視されます。
内部で空値に変換されているようです。

あなたがいれたいのは空値またはヌルでしょう。
空白と空値は異なるものです。
また、空値とヌルも異なります。

Datetime型へ空値を入れた場合
「1900/1/1 00:00:00.000」が代入されます。

これを避けるには
VALUES ( 1, 'あいう', '')
ではなく
VALUES ( 1, 'あいう', NULL)
と入力しましょう。
    • good
    • 3
この回答へのお礼

ありがとうございます。出来ました。
ずうずしく、もう少しお聞きしたいのですが、

hensu = Null

E_SQL = "INSERT INTO TABLE1 VALUES ( 1,'あいう', '" & hensu & "')"

という感じだとやっぱり「''」になってしまうので、変数でもちたいときはNullの情報が入ったときは文書を変えなければならないのでしょうか?それとも、書き方に問題があるのでしょうか?
ご回答いただけたら幸いです。

お礼日時:2001/06/27 18:18

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A