首页 > 解决方案 > Postgres:如果列包含null,则使用false更新布尔列

问题描述

我有一个名为 test 的现有表,其中包含两列 id 并已使用

这里使用的在我的表中包含三个值 null、false 和 true。这里 null 是使用的默认值

我想用 used false 更新行,其中 used 为 null,所以我在 Postgres 中尝试了下面的查询,但它对我不起作用。

  update test set utilized=false where utilized=null;

标签: postgresql

解决方案


您必须使用IS NULL来检查值是否存在NULL

UPDATE test
SET utilized = false
WHERE utilized IS NULL;

在 SQL 中,与 Java 或 C# 等其他地方不同,NULL它是一个特殊的值,意思是“未知”。因此,将列与NULL使用=运算符进行比较也是未知的,因为它可能正确也可能不正确。相反,使用IS NULLorIS NOT NULL直接将列与NULL.


推荐阅读