Update columns with Null values

后端 未结 5 1206
渐次进展
渐次进展 2020-12-17 07:59

I tried updating a table as follows:

update userloginstats set logouttime = sysdate where logouttime = null;

It didn\'t update the columns

相关标签:
5条回答
  • 2020-12-17 08:16

    Change it to

    ...where logouttime is null;
                        ^^^^^^^
    

    NULL is a special value and we cannot use the usual = operator with it.

    From the Oracle documentation for NULL:

    To test for nulls, use only the comparison conditions IS NULL and IS NOT NULL. If you use any other condition with nulls and the result depends on the value of the null, then the result is UNKNOWN because null represents a lack of data, a null cannot be equal or unequal to any value or to another null

    0 讨论(0)
  • 2020-12-17 08:34

    You need to use is null not = null

    update userloginstats set logouttime= sysdate where logouttime is null;
    
    0 讨论(0)
  • 2020-12-17 08:35

    You cannot compare NULLs with =.

    Use this:

    update userloginstats set logouttime= sysdate where logouttime is null;
    
    0 讨论(0)
  • logouttime is null, not = null. null is never equal to anything, not even itself. Thus, the operator is.

    0 讨论(0)
  • 2020-12-17 08:40

    For nulls you must use "IS NULL" or "IS NOT NULL" rather than the = operator. This is because null is technically neither true or false, rather it's the absence of a value either way.

    Most programming languages typically associate null with false for convenience (and thereby enabling the use of the = operator), but SQL takes a more purist approach, rightly or wrongly.

    0 讨论(0)
提交回复
热议问题