SYSDATE
はそれが@A
とSOMESCHEMA.SOMETABLE.SYSDATE
が日データ型であると仮定すると、@A
の任意の値よりも大きくなり、NULL
であれば、私はDB2Nullは、任意の日付のデータ型よりも大きいですか?
SELECT * FROM SOMESCHEMA.SOMETABLE WHERE SYSDATE > @A
でこのクエリを持っていますか?
助けてください。前もって感謝します。
SYSDATE
はそれが@A
とSOMESCHEMA.SOMETABLE.SYSDATE
が日データ型であると仮定すると、@A
の任意の値よりも大きくなり、NULL
であれば、私はDB2Nullは、任意の日付のデータ型よりも大きいですか?
SELECT * FROM SOMESCHEMA.SOMETABLE WHERE SYSDATE > @A
でこのクエリを持っていますか?
助けてください。前もって感謝します。
NULL値を含むことができる値を比較するのに役立つ別の述語は、DISTINCT述部です。両方の列に同じ非NULL値が含まれている場合、通常の等価比較(COL1 = COL2)を使用して2つの列を比較すると、真となります。両方の列がNULLの場合、nullは他の値と決して等しくないため、結果はfalseになります。 DISTINCT述部を使用すると、NULL値は等しいとみなされます。したがって、COL1はNOT COL2のDISTINCTで、両方の列に同じ非NULL値が含まれている場合、および両方の列がNULL値である場合はtrueになります。あなたが何かに未知の値を比較しているため、すべての比較操作がfalseになることを意味し
。したがって、どの比較を使用しても(IS NULL/IS NOT NULL操作だけが動作します)、falseになります。
クエリが動作する場合は、別の可能性は、値がnullであるかどうかをテストするIS NULL
を使用することです
SELECT *
FROM SOMESCHEMA.SOMETABLE
WHERE COALESCE(SYSDATE, TIMESTAMP_FORMAT('0001-01-01 23:59:59', 'YYYY-MM-DD HH24:MI:SS')) > @A
回答ありがとうございますが、少しぼやけているようです。そこには、「nullは決して他の値と等しくありません」と、_equal_は_greater than_ conditionと同じですか?助けてください。 –
比較の片側または両側にNULLが含まれていると、すべての比較が失敗することを明確にするために私の回答を編集しました(IS/IS NOT NULLを除く)。 – Eggi
あなたの助けを借りてくれてありがとう、スーパーデュパーウルトラメガですが、クエリでエラーが発生するので、_fail_はどういう意味ですか? –
のようなものを使用する必要があります
SELECT * FROM SOMESCHEMA.SOMETABLE WHERE SYSDATE > @A OR SYSDATE IS NULL
はあなたに値が含まれます戻り値のセットは、COALESCE
の代わりに機能します。それは単純なケースでのみ動作します。
次の2つのNULL可能日付(P.EndDate、C.EndDate)の比較のために、このソリューションを使用することができます。
[MinDate] =
CASE
WHEN
ISNULL(C.EndDate,P.EndDate) <= ISNULL(P.EndDate,C.EndDate)
THEN
ISNULL(C.EndDate,P.EndDate)
ELSE
ISNULL(P.EndDate,C.EndDate)
END
DB2は、「ANSI NULL」の意味を持っている場合は、trueの場合にのみ二項演算子があるべき」 IS NULL "、AFAIK。 –
@pst DB2は[ANSI]を持っています(http://www.dbforums.com/db2/765612-handing-null-values-db2.html#post2808106)、真である唯一のバイナリ演算子は何ですか? "無効である"_ ? –