我尝试按如下方式更新表格:
update userloginstats set logouttime = sysdate where logouttime = null;
它没有使用空值更新列。出了什么问题?
答案 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
,而不是= null
。 null
永远不等于任何东西,甚至不是自己。因此,运营商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采用更纯粹的方法,无论是对还是错。