論理演算子の使い方
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 );
次のようなデータをテーブルに追加しました。
insert into test values (TRUE, TRUE), (TRUE, FALSE), (TRUE, NULL), (FALSE, FALSE), (FALSE, NULL), (NULL, NULL);
それでは SELECT コマンドを使って論理積の左辺および右辺の値によって全体がどのように評価されるのかを取得してみます。
select flag1, flag2, flag1 and flag2 as "flag1 and flag2" from test;
左辺および右辺の値によって論理積の結果がどのようになるのか取得することができました。
論理和
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;
左辺および右辺の値によって論理和の結果がどのようになるのか取得することができました。
否定
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, );
次のようなデータをテーブルに追加しました。
insert into test values (TRUE),(FALSE),(NULL);
それでは SELECT コマンドを使って否定の右辺の値によって全体がどのように評価されるのかを取得してみます。
select flag, not flag as "not flag" from test;
右辺の値によって否定の結果がどのようになるのか取得することができました。
-- --
PostgreSQL で用意されている論理演算子の使い方について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。