- ベストアンサー
sever2000使用時に検索がひっかからない(MSSQL)
sever2000使用時に検索がひっかからない(MSSQL) ので、わかる方がいらっしゃいましたら、教えて 下さい。 初期値<NULL>がデーター内に入っていた場合、 その項目が一つでもあると、その検索は除外して しまいます。それは、どうしてなのでしょうか? 検索(商品マスター.グループ)is not nullで除外できる ように設定していますが、この検索条件を入力しな くても、除外されます? なぜでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
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文をすべて提示されるべきかと私も思います
その他の回答 (5)
- はなおか じった(@Jitta)
- ベストアンサー率42% (69/161)
結合ですか?OUTER JOINを使用して、検索条件から結合条件を除外しましょう。 何にしても、説明が乏しすぎます。最低限、テーブル構成(各項目やテーブル名は架空名に変更する)が必要です。
お礼
なんとか、解決しました。有難うございました。
- Struts
- ベストアンサー率48% (29/60)
試されているSQL文をselectから書いて下さい。 その方がみんなわかりやすいと思います。
お礼
なんとか、解決しました。有難うございました。
- human_7
- ベストアンサー率29% (15/51)
もう一度、試されたSQL文を提示されてはいかがですか? こう書いたときは○○○で、こうの時は△△△で、という様に具体的に。 最初の質問だけでは、さっぱり???です
補足
すみません。うまく説明ができなくて・・・ 一応、皆さんの意見を参考にして、 where (商品マスター.グループ) = '' or (商品マスター.グループ) is null and NOT ((商品マスター.グループ) IS NULL) と記述してみました。 ですが、この条件をいれていなくても、 (商品マスター.グループ)に<NULL>の値(初期値) がはずされて検索結果にでてしまいます。 バージョン等の違いでしょうか?
- human_7
- ベストアンサー率29% (15/51)
質問がよくわからないのですが、、、 検索項目が空白の場合で、NULLも空白値として検索対象としたい場合には、 select * from XXX where YYY = '' or YYY is null という感じ 両方書くのが面倒なら、 where isnull(YYY, '') = '' とも書けます。が、速度は遅くなります
補足
データ自体に空白というか、何もいれていない 状態なのです。server7.0からserver2000に移行 した際に、そのような表示になったようです。 やはり、何も記述、スペースなど入れていない 状態でも、その状態を検索条件からはずしたい場合は、 where isnull(YYY, '') = '' とした方が良いのでしょうか?
- reachippatu
- ベストアンサー率24% (105/431)
is not nullではなくて、NOT (検索 IS NULL) でやってみてください。
補足
NOT(商品マスター.グループ)is nullでしてみましたが、 この文を記述しなくても、除外されてしまいます。 データをserver7.0からserver2000に移行した時に、 何も記述してない項目は、<NULL>表示になった ようです。 これは、バージョンの違いでしょうか? また、上記の 検索(商品マスター.グループ)is not nullと (商品マスター.グループ)is not null では、同じような結果になりました。 もし良かったら、教えて下さい。
お礼
なんとか、解決しました。有難うございました。