我正在维护一个项目。有一个名为'timeblock'的表,它有一个名为'break_minutes'的字段,在旧设计中,'break_minutes'的类型是int,默认值是NULL。
这个设计不适合我的新任务,因为我会使用'break_minutes'来做一些数学函数。像总和。所以我已经将数据库架构和默认值更改为0而不是Null。
所以我必须将'break_minutes'值为NULL的所有数据更改为0。
所以我写了sql:
update timeblock set break_minutes=0 where break_minutes=NULL
,结果为空。
如果我写sql:
update timeblock set break_minutes=0 where break_minutes=NULL
结果仅适用于值为0的行。
两个平方都不能达到我的期望。
任何有这个想法的人?感谢。
答案 0 :(得分:4)
要检查值是否为 NULL ,请使用特殊比较谓词IS NULL
,而不是使用比较运算符。
比较运算符在与 NULL 进行比较时返回unknown
。
UPDATE timeblock SET break_minutes=0 WHERE break_minutes IS NULL