ブール型 - Amazon Redshift

ブール型

シングルバイト列に true 値および false 値を格納するには、BOOLEAN データ型を使用します。次の表に、ブール値の取り得る 3 つの状態と、各状態をもたらすリテラル値について説明します。入力文字列に関係なく、ブール列では、true の場合は「t」を、false の場合は「f」を格納および出力します。

有効なリテラル値 ストレージ
True TRUE 't' 'true' 'y' 'yes' '1' 1 バイト
False FALSE 'f' 'false' 'n' 'no' '0' 1 バイト
不明 NULL 1 バイト

IS 比較を使用すると、ブール値を WHERE 句の述語としてのみチェックできます。SELECT リストのブール値に対して IS 比較を使用することはできません。

注記

以下の例に示すように、ブール値を常に明示的に確認することをお勧めします。WHERE flagWHERE NOT flag などの暗黙的な比較では、予期しない結果が返ることがあります。

Examples

BOOLEAN 列を使用すれば、CUSTOMER テーブル内の顧客ごとに「アクティブ/非アクティブ」状態を格納できます。

create table customer( custid int, active_flag boolean default true);
insert into customer values(100, default);
select * from customer; custid | active_flag -------+-------------- 100 | t

CREATE TABLE ステートメントにデフォルト値 (true または false) が指定されていない場合は、デフォルト値を挿入しても Null が挿入されます。

この例では、クエリによって、スポーツは好きだが映画館は好きでないユーザーが USERS テーブルから選択されます。

select firstname, lastname, likesports, liketheatre from users where likesports is true and liketheatre is false order by userid limit 10; firstname | lastname | likesports | liketheatre ----------+------------+------------+------------- Lars | Ratliff | t | f Mufutau | Watkins | t | f Scarlett | Mayer | t | f Shafira | Glenn | t | f Winifred | Cherry | t | f Chase | Lamb | t | f Liberty | Ellison | t | f Aladdin | Haney | t | f Tashya | Michael | t | f Lucian | Montgomery | t | f (10 rows)

次の例では、ロックミュージックを好むかどうか不明なユーザーが USERS テーブルから選択されます。

select firstname, lastname, likerock from users where likerock is unknown order by userid limit 10; firstname | lastname | likerock ----------+----------+---------- Rafael | Taylor | Vladimir | Humphrey | Barry | Roy | Tamekah | Juarez | Mufutau | Watkins | Naida | Calderon | Anika | Huff | Bruce | Beck | Mallory | Farrell | Scarlett | Mayer | (10 rows)

次の例では、SELECT リストで IS 比較を使用しているため、エラーが返されます。

select firstname, lastname, likerock is true as "check" from users order by userid limit 10; [Amazon](500310) Invalid operation: Not implemented

次の例は、IS 比較ではなく SELECT リストで等号比較 ( = ) を使用しているため成功します。

select firstname, lastname, likerock = true as "check" from users order by userid limit 10; firstname | lastname | check ----------+-----------+------ Rafael | Taylor | Vladimir | Humphrey | Lars | Ratliff | true Barry | Roy | Reagan | Hodge | true Victor | Hernandez | true Tamekah | Juarez | Colton | Roy | false Mufutau | Watkins | Naida | Calderon |