你如何明确地找到一个字段为 NULL 的记录?

How do you explicitly find a record where a field is NULL?

来自documentation

When query with struct, GORM will only query with those fields has non-zero value, that means if your field’s value is 0, '', false or other zero values, it won’t be used to build query conditions.

这是我正在尝试做的一个例子:

type Dog struct {
  ID uuid.UUID
  OwnerID *uuid.UUID
}

所有者 ID 指针可能为 nil。

db.Where("owner_id", nil).Find(&dogs)

但是 returns 所有的狗(我从文档中预料到这一点)。我尝试这样做:

db.Where("owner_id", "NULL").Find(&dogs)

但是 returns 一个空列表。

有没有办法显式搜索 NULL 值字段?

根据文档,这应该有效:

db.Where("owner_id IS NULL").Find(&dogs)

您最初的尝试很接近。您也可以通过如下方式编写查询来达到您想要的结果。

db.Where("owner_id = ?", "NULL").Find(&dogs)