您好我想更新一个表作为如下与空更新列中的值
update userloginstats set logouttime= sysdate where logouttime= null;
但它没有与空值更新的列。 出了什么问题
您好我想更新一个表作为如下与空更新列中的值
update userloginstats set logouttime= sysdate where logouttime= null;
但它没有与空值更新的列。 出了什么问题
将其更改为
...where logouttime is null;
^^^^^^^
NULL
是一个特殊的价值,我们不能与它使用普通的=
操作。
从Oracle documentation for NULL:
为了测试空值,使用只有比较条件IS NULL和IS NOT NULL。如果您使用任何其他空值的条件并且结果取决于null的值,则结果为UNKNOWN,因为null表示缺少数据,则不能将等于或不等于任何值或等于零
logouttime is null
而不是= null
。 null
永远不会等于任何东西,甚至不是自己。因此,运营商is
。
您需要使用is null
不= null
update userloginstats set logouttime= sysdate where logouttime is null;
你不能用= NULL值相比较。
使用此:
update userloginstats set logouttime= sysdate where logouttime is null;
空值,你必须使用 “IS NULL” 或 “IS NOT NULL”,而不是=运算符。这是因为null在技术上既不是真的也不是假的,而是两者都没有价值。
大多数编程语言通常关联空虚假为了方便(从而使使用=运算符),但SQL需要一个更纯粹的方式,或对或错。
<抵制诱惑,添加另一个答案,说完全一样的东西...> – 2010-10-14 03:36:19