次のような WHERE 句を含むクエリがある場合:
where date1 > date2
date2 が null の場合はどうなりますか? date1 と date2 の両方が null でないことを指定する必要がありますか?
タイプは DATE() です
次のような WHERE 句を含むクエリがある場合:
where date1 > date2
date2 が null の場合はどうなりますか? date1 と date2 の両方が null でないことを指定する必要がありますか?
タイプは DATE() です
比較date1
を試みNULL
、不明と評価されます。
WHERE '2013-07-18' > NULL
は不明です。NULL
3 つの値を持つロジックでの動作に関する私のブログ投稿を参照してください。
ISNULL
aroundのような関数を使用するdate2
か、ロジックを明示的に書き出す必要があります。ただし、使用ISNULL
すると、インデックスが使用されなくなります。あなたは書くことができます:
WHERE (date1 > date2 OR date2 IS NULL)
と等しいかどうかを比較した場合、任意の値は、 と比較した場合でも、のNULL
値を生成します。False
NULL
NULL
IS NULL
演算子を使用して の値を確認できますNULL
。
常に不明。NULL 値は IS NULL ステートメントで処理する必要があります
この例を試してください:
declare @d1 datetime
declare @d2 datetime
set @d1 = GETDATE()
select
case
when @d1 > @d2 then 'OK'
else 'KO'
end
null 許容日付に ISNULL を使用し、デフォルトの日付または他のフィールドに置き換えます。
例えば:
ここで、Date1 > ISNULL(date2, '1900-01-01') です。
いっそのこと、ハードコードをデフォルトのパラメータに置き換えてください。
@defaultvardt DATE = '1900-01-01' を宣言します。
Date1 > ISNULL(date2, @defaultvardt) の場合