可以具有三种状态的列的数据类型:是、否、未知

gue*_*tli 0 postgresql null datatypes

我有一个应用程序,用户可以在其中做出决定:

  • 是的
  • 未知

我开始使用可以为空的布尔列。

但是事情变得相当复杂,因为我的框架 (django) 没有提供用于开箱即用的搜索表单编码的输入字段。

在搜索表单中,我需要四种状态:

  • 是的
  • 未知
  • 显示全部(在搜索中忽略此列)

相关问题:https : //stackoverflow.com/questions/38307866/search-form-for-nullbooleanfield

一个旧的经验法则再次出现在我的脑海中:

避免可为空的数据库列。

我想将数据类型从可为空的布尔字段更改为不同的类型。

可以具有三种状态的列的哪种数据类型:是、不是、未知?

我使用 Postgres 9,但 AFAIK 这对于这个问题应该无关紧要。

a_h*_*ame 6

你要boolean

它可以有true(=yes)、false(=no) 和null(=unknown)

手册中的更多详细信息:https :
//www.postgresql.org/docs/current/static/datatype-boolean.html


避免可空列”只是一个建议。如果您需要“未知”状态,那么NULL正是您要寻找的。它是专门为代表“未知”而创建的。

Postgres 甚至支持unknown布尔表达式的关键字:where some_column is unknown相当于where some_column is nullifsome_column定义为boolean