投稿日 | : 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) となり、検索条件にはヒットしないはずです。