VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2005/02/28(Mon) 15:17
投稿者魔界の仮面弁士
Eメール
URL
タイトルRe^7: NULL表示について

> > > 新しい問題で、mdbにNULL値がある場合、検索してもヒットされてこない行があります。
>     strSQL = "SELECT * FROM CR5000 WHERE partName like '" & txtpartName.Text & _
>             "' and partcode like '" & txtPartCode.Text & _
>             "' and GTCode like '" & txtGTCode.Text & _
>             "' and Maker like '" & txtMaker.Text & _
>             "' and MakerCode like '" & txtMakerCode.Text & _
>             "' and value like '" & txtvalue.Text & _
>             "' and NumberOfPin like '" & txtNumberOfPin.Text & "'"

LIKE演算子で検索しているのですね。

相手がNULLの場合、『列名 LIKE '条件文字列'』では検索されないため、
『列名 IS NULL』を使う必要があります。


> > > 但し、よくわからないんですが、NULL値があってもヒットされてくる行もあります。
> > 1. 『NULL』と『長さゼロの文字列』を混同していないか。
> > 2. 『NULL』の項目に対して「= 演算子」で比較していないか。
> > などを良く確認してみてください。
> 確認してから返信しますので、よろしくお願いします。

NULL値の判断は、VBでは IsNull 関数を使って「If IsNull(値) Then」のように書きます。
SQLでは、IS演算子を使って「WHERE 列名 IS NULL」のように書く必要があります。


NULLは空データという意味ではなく、「不明な値」という意味を持つ事に注意してください。

内容が不明な値に対して、「=, LIKE, >, <」などで比較したとしても、データが
一致するかどうかはわかりませんよね。ですから、NULL と = や LIKE で比較した場合は、
結果は常に 不明値(NULL) となり、検索条件にはヒットしないはずです。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -