使用Null值更新列

时间:2010-10-13 12:42:54

标签: sql oracle null sql-update

我尝试按如下方式更新表格:

update userloginstats set logouttime = sysdate where logouttime = null;

它没有使用空值更新列。出了什么问题?

5 个答案:

答案 0 :(得分:57)

将其更改为

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

NULL是一个特殊值,我们无法使用通常的=运算符。

来自Oracle documentation for NULL

  

要测试空值,请使用比较条件IS NULL和IS NOT NULL。如果您使用任何其他条件为null并且结果取决于null的值,则结果为UNKNOWN,因为null表示缺少数据,null 不能等于或不等于任何值或到另一个空

答案 1 :(得分:7)

您无法将NULL与=。

进行比较

使用此:

update userloginstats set logouttime= sysdate where logouttime is null;

答案 2 :(得分:5)

logouttime is null,而不是= nullnull永远不等于任何东西,甚至不是自己。因此,运营商is

答案 3 :(得分:4)

您需要使用is null而不是= null

update userloginstats set logouttime= sysdate where logouttime is null;

答案 4 :(得分:1)

对于空值,您必须使用“ IS NULL ”或“ IS NOT NULL ”而不是=运算符。这是因为null在技术上既不是真的也不是假的,而是两种方式都没有值。

为方便起见,大多数编程语言通常将null与false关联(从而允许使用=运算符),但SQL采用更纯粹的方法,无论是对还是错。