field2
がNULL
の場合も含まれます。あなたはnullがマッチではなく、それを表示したいことを知っています。
SELECT * FROM table
WHERE field1 != field2
OR (field1 IS NULL AND field2 IS NOT NULL)
OR (field1 IS NOT NULL AND field2 IS NULL)
また、あなたは別の値としてnull
を主張するCOALESCE
を使用することができます。この場合は0を使用しました。 field1
またはfield2
に0がない場合にのみ0を使用してください。基本的にあなたのテーブルにはない値を選択してください。
select * from table where COALESCE(field1, 0) != COALESCE(field2, 0)
編集:OPは、field1がnullである可能性があると主張し、最初のクエリを変更しました。クエリ1は何が起こっているかについてもう少し明確であり、クエリ2は同じ最終結果を達成するためのより簡潔な方法です。
もっとここで読む:COALESCE Function in TSQL
また、しかし、それは私の理解にはあまり効率的で、COALESCE
ようNULL
に対処するNVL()
を使用することができます。さらに詳しい情報:は(あなたがコメントで示されているように)両方のフィールドがnull
ある行を除外するために必要であればOracle Differences between NVL and Coalesce
ORACEは3つの値論理を使用しています - http://www.oracle.com/technetwork/issue-archive/2005/05-jul/o45sql-097727.html –
あなたが含ままたは行を除外したいですか両方のフィールドがnullの場合 – mathguy
@mathguyは、両方がヌルであるときに除外されます。なぜなら、それらは事実上等価であるからです(私は彼らが両方ともヌルであると確信しているわけではありませんが、それは十分です)。 – Jonjilla