• ベストアンサー

sever2000使用時に検索がひっかからない(MSSQL)

sever2000使用時に検索がひっかからない(MSSQL) ので、わかる方がいらっしゃいましたら、教えて 下さい。 初期値<NULL>がデーター内に入っていた場合、 その項目が一つでもあると、その検索は除外して しまいます。それは、どうしてなのでしょうか? 検索(商品マスター.グループ)is not nullで除外できる ように設定していますが、この検索条件を入力しな くても、除外されます? なぜでしょうか?

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

  • ベストアンサー
  • human_7
  • ベストアンサー率29% (15/51)
回答No.5

SQL文が書かれるのを待った方が良いのかと思いつつ... >where (商品マスター.グループ) = '' or (商品マスター.グループ) is null and NOT ((商品マスター.グループ) IS NULL) ですが、ちょっと整理すると where   (商品マスター.グループ) = '' or    (商品マスター.グループ) is null and  NOT ((商品マスター.グループ) is null) と書いてますね。   (商品マスター.グループ) is null and  NOT ((商品マスター.グループ) is null) この部分ですが、上の方は「値がNullなら」となっており、 下の方は「NOT 値がNullなら」(つまり、「値がNullで無ければ」となりますよね? この2つについては相反する条件の関係となっており、それを「and」で判定しています。これでは絶対に条件が成り立ちませんね。ちょっと考えればわかる事だと思います 最初に立ち返って、 有る値Aに一致するデータを抽出したければ where   (商品マスター.グループ) = 値A で抽出できます。値Aが空白('')を抽出する場合も同じです。ただ、ここで空白はNull値も含めて抽出したいということなら、「or」で繋げて  or (商品マスター.グループ) is null が必要になるでしょう No.4さんも書かれてますが、SQL文をすべて提示されるべきかと私も思います

sara555
質問者

お礼

なんとか、解決しました。有難うございました。

その他の回答 (5)

回答No.6

 結合ですか?OUTER JOINを使用して、検索条件から結合条件を除外しましょう。  何にしても、説明が乏しすぎます。最低限、テーブル構成(各項目やテーブル名は架空名に変更する)が必要です。

sara555
質問者

お礼

なんとか、解決しました。有難うございました。

  • Struts
  • ベストアンサー率48% (29/60)
回答No.4

試されているSQL文をselectから書いて下さい。 その方がみんなわかりやすいと思います。

sara555
質問者

お礼

なんとか、解決しました。有難うございました。

  • human_7
  • ベストアンサー率29% (15/51)
回答No.3

もう一度、試されたSQL文を提示されてはいかがですか? こう書いたときは○○○で、こうの時は△△△で、という様に具体的に。 最初の質問だけでは、さっぱり???です

sara555
質問者

補足

すみません。うまく説明ができなくて・・・ 一応、皆さんの意見を参考にして、 where (商品マスター.グループ) = '' or (商品マスター.グループ) is null and NOT ((商品マスター.グループ) IS NULL) と記述してみました。 ですが、この条件をいれていなくても、 (商品マスター.グループ)に<NULL>の値(初期値) がはずされて検索結果にでてしまいます。 バージョン等の違いでしょうか?

  • human_7
  • ベストアンサー率29% (15/51)
回答No.2

質問がよくわからないのですが、、、 検索項目が空白の場合で、NULLも空白値として検索対象としたい場合には、 select * from XXX where YYY = '' or YYY is null という感じ 両方書くのが面倒なら、 where isnull(YYY, '') = '' とも書けます。が、速度は遅くなります

sara555
質問者

補足

データ自体に空白というか、何もいれていない 状態なのです。server7.0からserver2000に移行 した際に、そのような表示になったようです。 やはり、何も記述、スペースなど入れていない 状態でも、その状態を検索条件からはずしたい場合は、 where isnull(YYY, '') = '' とした方が良いのでしょうか?

回答No.1

is not nullではなくて、NOT (検索 IS NULL) でやってみてください。

sara555
質問者

補足

NOT(商品マスター.グループ)is nullでしてみましたが、 この文を記述しなくても、除外されてしまいます。 データをserver7.0からserver2000に移行した時に、 何も記述してない項目は、<NULL>表示になった ようです。 これは、バージョンの違いでしょうか? また、上記の  検索(商品マスター.グループ)is not nullと (商品マスター.グループ)is not null では、同じような結果になりました。 もし良かったら、教えて下さい。

関連するQ&A