PostgreSQLでは、標準SQLのboolean
型が提供されています。
表 8.19を参照してください。
boolean
型はいくつかの状態を取ることができます。
「真」もしくは「偽」、そして第3の状態はSQLではNULL値で表現される「不明」の状態です。
表8.19 論理値データ型
名前 | 格納サイズ | 説明 |
---|---|---|
boolean | 1バイト | 真または偽の状態 |
論理定数はSQL問い合わせの中で、SQLキーワードのTRUE
、FALSE
およびNULL
によって表現できます。
boolean
のデータ型を入力する関数には次の文字列表現を「真」の状態として使うことができます。
true |
yes |
on |
1 |
「偽」の状態には以下の表現が使用できます。
false |
no |
off |
0 |
t
や n
など、これらの文字列固有の接頭辞も利用できます。
先頭または末尾の空白文字は無視され、大文字小文字の区別は関係ありません。
boolean
のデータ型を出力する関数は例 8.2にあるように、常にt
かf
を出力します。
例8.2 boolean
型の使用
CREATE TABLE test1 (a boolean, b text); INSERT INTO test1 VALUES (TRUE, 'sic est'); INSERT INTO test1 VALUES (FALSE, 'non est'); SELECT * FROM test1; a | b ---+--------- t | sic est f | non est SELECT * FROM test1 WHERE a; a | b ---+--------- t | sic est
キーワードであるTRUE
とFALSE
はSQLクエリの中で論理定数の記述として好ましい(SQL準拠)方式です。
しかし、 4.1.2.7のリンクで記述されている、以下のような一般的な文字列リテラル定数の構文に従って'yes'::boolean
というような文字表現することもできます。
パーサーは自動的にTRUE
とFALSE
はboolean
型と理解しますが、NULL
は他のすべての型に存在するため、boolean
型と理解しない点に気をつけてください。
このため、コンテキストによってはNULL::boolean
というように、NULL
をboolean
に明確にキャストする必要があります。
逆に、解析でリテラルがboolean
型でなければならないと推論できるコンテキストでは、文字列リテラルブール値のキャストは省略できます。