views:

74

answers:

5

Hi I want to update a table as followings

update userloginstats set logouttime= sysdate where logouttime= null;

But it did not update the columns with null values. what is wrong

+1  A: 

logouttime is null, not = null. null is never equal to anything, not even itself. Thus, the operator is.

Donnie
+12  A: 

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

codaddict
+1  A: 

You need to use is null not = null

update userloginstats set logouttime= sysdate where logouttime is null;
Macros
+3  A: 

You cannot compare NULLs with =.

Use this:

update userloginstats set logouttime= sysdate where logouttime is null;
Lucero
A: 

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.

Goat Master