2016-05-12 8 views
0

私は下に持っているWHERE句と私はオラクル - との2つの列を比較すると、<>

がどのように私は列がと等しくない場所を返すことができますEnd_dt2が空白のところ、クエリがデータを返すされていない結果を見ています空白?

以下の値は返されません。
表:

id End_dt End_dt2 
1  1/1/15 

Where End_dt <> End_dt2 

答えて

1

ヌル比較は常に問題を与えます。あなたはそれに対処するためにNVLを追加する必要があります:

はもちろんの
WHERE End_dt <> NVL(End_dt2, date '9999-12-31') 

これ、End_dt2がnullのとき、レコードがクエリに表示されるべきであると考えています。

+0

をあなたはWHERE End_dt <> NVL(End_dt2、End_dt - 1)試してみてください場合には、誰かがあなたの好みと一致End_dtのための魔法の値を使用して開始し...と、おそらく合体を(使用する)のではなくNvl() –

5

end_dt2がnullの場合、比較は未定義ですが一致しません。 Null behaviour is explained in the documentation。あなたは魔法の日付としてNULLを扱うことができますが、あなたはまた、明示的にNULL値を確認することができます。

where end_dt2 is null or end_dt != end_dt2 

いずれかの列がNULLにすることができ、あなたは1(両方ではない)を扱いたい場合は「異なる」などのヌルされ、その後、あなたは行うことができます。

where (end_dt is not null and end_dt2 is null) 
or (end_dt is null and and_dtl2 is not null) 
or end_dt <> end_dt2 
関連する問題