これに従うと、それは本当に明白で簡単です。何らかの理由で、結果はデータサブセットのクエリとアプローチ角度によって異なります。フィールドcorrect_addr
は、許容可能なヌルを持つchar(1)
フィールドであることに注意してください。Informix SQL - 単純な選択クエリが予期しない結果を返す
select distinct correct_addr, count(*) from id_rec group by correct_addr;
correct_addr (count(*))
2477
N 80
Y 84013
3 row(s) retrieved.
オクラホマので、correct_addr
は、3つの異なる値が含まれています
select count(*) from id_rec where correct_addr <> 'N';
(count(*))
84013
: "N"、 "Y" を、そして "" または "" または
NULL
はだから今、私はこのしてみてください
空白の値を持つ2477レコードにはどうなりましたか?
もう一つは、別の角度から試してみてください。
select count(*) from id_rec where correct_addr in (null,'',' ','Y');
(count(*))
84013
同じことがだから何がここで起こっている....
をどうなりますか? SQLエンジン(?)が最後の2つのSQL文で空白の値を認識しないのはなぜですか?それは、最初のクエリではグループ分けでうまく発見されますが、それ以外はどこにもありません。
このタイプのことが起こる理由は誰にもありますか?
感謝...私は 'correct_addrがnullであること'と 'correct_addr in(null)'が異なって扱われたことを知らなかった – CheeseConQueso