Postgresql

可以具有三種狀態的列的數據類型:是,否,未知

  • July 15, 2016

我有一個應用程序,使用者可以在其中做出決定:

  • 是的
  • 未知

我開始使用可以為空的布爾列。

但是事情變得相當複雜,因為我的框架 (django) 沒有提供用於編碼開箱即用的搜尋表單的輸入欄位。

在搜尋表單中,我需要四種狀態:

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

相關問題:https ://stackoverflow.com/questions/38307866/search-form-for-nullbooleanfield

一個古老的經驗法則再次出現在我的腦海中:

避免可為空的 db 列。

我想將數據類型從可為空的布爾欄位更改為不同的類型。

可以具有三種狀態的列的數據類型是什麼:是,不是,未知?

我使用 Postgres 9,但 AFAIK 這對於這個問題應該無關緊要。

你想要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

Postgres 土地中是否存在 BIT 數據類型?

當我只想擁有 Y/N/NULL 值時,BIT 是我在 SQL Server 中使用的數據類型。

引用自:https://dba.stackexchange.com/questions/143985