更新具有 Null 值的列
我尝试按如下方式更新表:
update userloginstats set logouttime = sysdate where logouttime = null;
它没有更新具有空值的列。出了什么问题?
I tried updating a table as follows:
update userloginstats set logouttime = sysdate where logouttime = null;
It didn't update the columns with null values. What went wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
将其更改为
NULL
是一个特殊值,我们不能使用通常的=
运算符。来自 NULL 的 Oracle 文档:
Change it to
NULL
is a special value and we cannot use the usual=
operator with it.From the Oracle documentation for NULL:
不能将 NULL 与 = 进行比较。
使用这个:
You cannot compare NULLs with =.
Use this:
注销时间为 null
,而不是= null
。null
永远不等于任何东西,甚至不等于它本身。因此,运算符是
。logouttime is null
, not= null
.null
is never equal to anything, not even itself. Thus, the operatoris
.您需要使用
is null
而不是= null
You need to use
is null
not= null
对于空值,您必须使用“IS NULL”或“IS NOT NULL”而不是 = 运算符。这是因为从技术上讲,null 既不是 true 也不是 false,而是无论哪种方式都没有值。
为了方便起见,大多数编程语言通常将 null 与 false 关联起来(从而可以使用 = 运算符),但 SQL 采用了更纯粹的方法,无论正确与否。
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.