私は次のようにテーブルを更新しようとしました:
update userloginstats set logouttime = sysdate where logouttime = null;
NULL値で列を更新しませんでした。何が悪かったのか?
に変更する
...where logouttime is null;
^^^^^^^
NULL
は特別な値であり、通常の=
演算子。
Nullをテストするには、only比較条件IS NULL and IS NOT NULL。NULLを含む他の条件を使用し、結果がNULLの値に依存する場合、NULLはデータの欠如を表すため、結果はUNKNOWNになります。nullcannot任意の値または別のnullと等しいか等しくない
NULLを=と比較することはできません。
これを使って:
update userloginstats set logouttime= sysdate where logouttime is null;
logouttime is null
ではなく= null
。 null
は、それ自体ではなく、決して何にも等しくなりません。したがって、演算子is
。
is null
ではなく= null
を使用する必要があります
update userloginstats set logouttime= sysdate where logouttime is null;
Nullの場合、=演算子ではなく、「IS NULL」または「IS NOT NULL」を使用する必要があります。これは、nullが技術的に真でも偽でもないためであり、どちらの場合も値が存在しないためです。
ほとんどのプログラミング言語は、通常、便宜上nullとfalseを関連付けます(したがって、=演算子の使用を有効にします)が、SQLはより純粋なアプローチを正しくまたは誤って採用します。