論理演算子の使い方

PostgreSQL では利用できる論理演算子として AND 、 OR 、 NOT の3つが用意されてます。ここでは PostgreSQL における論理演算子の使い方について解説します。

※ PostgreSQL で 真 や 偽 を表す値にどのようなものがあるのについては「論理値データ型」を参照されてください。

(Last modified: )

論理積

AND は論理積です。左辺および右辺が TRUE 、 FALSE 、 NULL の値だった場合に式全体がどう評価されるのかは次の一覧をみてください。

TRUE   AND  TRUE   -> TRUE
TRUE   AND  FALSE  -> FALSE
TRUE   AND  NULL   -> NULL
FALSE  AND  FALSE  -> FALSE
FALSE  AND  NULL   -> FALSE
NULL   AND  NULL   -> NULL

式全体が TRUE となるのは左辺および右辺がともに TRUE だった場合だけです。また TRUE AND NULL が NULL なのに対して FALSE AND NULL は FALSE となる点に注意してください。

-- --

では実際に試してみます。次のようなテスト用のテーブルを作成しました。

create table test(
  flag1 boolean,
  flag2 boolean
);

論理積(1)

次のようなデータをテーブルに追加しました。

insert into test values
  (TRUE, TRUE),
  (TRUE, FALSE),
  (TRUE, NULL),
  (FALSE, FALSE),
  (FALSE, NULL),
  (NULL, NULL);

論理積(2)

それでは SELECT コマンドを使って論理積の左辺および右辺の値によって全体がどのように評価されるのかを取得してみます。

select flag1, flag2, flag1 and flag2 as "flag1 and flag2" from test;

論理積(3)

左辺および右辺の値によって論理積の結果がどのようになるのか取得することができました。

論理和

OR は論理和です。左辺および右辺が TRUE 、 FALSE 、 NULL の値だった場合に式全体がどう評価されるのかは次の一覧をみてください。

TRUE   OR  TRUE   -> TRUE
TRUE   OR  FALSE  -> TRUE
TRUE   OR  NULL   -> TRUE
FALSE  OR  FALSE  -> FALSE
FALSE  OR  NULL   -> NULL
NULL   OR  NULL   -> NULL

左辺および右辺のすくなくともいずれか一つが TRUE だった場合、式全体が TRUE となります。また TRUE OR NULL が TRUE なのに対して FALSE AND NULL は NULL となる点に注意してください。

-- --

では実際に試してみます。つぎのよう論理積のところで使用したテーブルを使用し、 SELECT コマンドを使って論理和の左辺および右辺の値によって全体がどのように評価されるのかを取得してみます。

select flag1, flag2, flag1 or flag2 as "flag1 or flag2" from test;

論理和(1)

左辺および右辺の値によって論理和の結果がどのようになるのか取得することができました。

否定

NOT は否定です。右辺が TRUE 、 FALSE 、 NULL の値だった場合に式全体がどう評価されるのかは次の一覧をみてください。

NOT  TRUE   -> FALSE
NOT  FALSE  -> TRUE
NOT  NULL   -> NULL

右辺が TRUE の場合、式全体は FALSEとなり、右辺が FALSE の場合、式全体は TRUE となります。また NOT NULL は NULL となります。

-- --

では実際に試してみます。次のようなテスト用のテーブルを作成しました。

create table test(
  flag boolean,
);

否定(1)

次のようなデータをテーブルに追加しました。

insert into test values (TRUE),(FALSE),(NULL);

否定(2)

それでは SELECT コマンドを使って否定の右辺の値によって全体がどのように評価されるのかを取得してみます。

select flag, not flag as "not flag" from test;

否定(3)

右辺の値によって否定の結果がどのようになるのか取得することができました。

-- --

PostgreSQL で用意されている論理演算子の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。