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型でなければならないと推論できるコンテキストでは、文字列リテラルブール値のキャストは省略できます。