目次へ
5.2.2. ブール演算子を使った述語

一般に、ブール式とは TRUE か FALSE というブール値を返すもので、ブール演算子は 1つ以上のブール値を関連づけて 1つのブール値を導き出すものです。SQL では NULL が存在することから、ブール値として TRUE, FALSE 及び UNKNOWN という 3つのブール値を使用する点で通常とは異なります。SQL が認識するブール演算子は AND, OR 及び NOT です。

NOT

NOT A という形でブール式を受け取って、その値を FALSE から TRUE に変更するか、TRUE から FALSE に変更します。次の表では NOT TRUE の場合、真理値として FALSE となることを示しています。

NOT を使用した場合の真理値
真理値
NOT TRUE FALSE
NOT FALSE TRUE
NOT UNKNOWN UNKNOWN
AND

A AND B という形でブール式を 2つ受け取り、2つの式が両方とも TRUE の場合は TRUE、それ以外の場合は FALSE と評価します。次の表では、FALSE AND TRUE のとき真理値は FALSE, UNKNOWN AND TRUE のとき真理値は UNKNOWN となることを示しています。

AND を使用した場合の真理値
AND TRUE FALSE UNKNOWN
TRUE TRUE FALSE UNKNOWN
FALSE FALSE FALSE FALSE
UNKNOWN UNKNOWN FALSE UNKNOWN
OR

A OR B という形でブール式を 2つ受け取り、どちらかの式が TRUE の場合は TRUE、それ以外の場合は FALSE と評価します。

OR を使用した場合の真理値
OR TRUE FALSE UNKNOWN
TRUE TRUE TRUE TRUE
FALSE TRUE FALSE UNKNOWN
UNKNOWN TRUE UNKNOWN UNKNOWN

NOT 演算子を使用したデータの参照例を sample.12-3 に示します。受注表から顧客コードが 001 でない全ての列を参照します。

-- sample.12-3 --
/* データの参照 */
SELECT * FROM 受注表 WHERE NOT 顧客コード = '001' ;

/* 実行結果 */

 受注番号 顧客コード 商品コード 受注個数 納品日
 ──── ───── ───── ──── ────
 10002     002        101       20       20010401
 10005     003        101       15       20010403
 10007     002        102       20       20010404
 10008     002        101       20       20010405
 10010     003        101       10       20010406
 10012     003        103       20       20010407

AND 演算子を使用したデータの参照例を sample.12-4 に示します。受注表から、商品コードが 101 で受注個数が 15 以上の受注番号と顧客コードと納品日を参照します。尚、分かりやすいように商品コードと受注番号も参照するように記述してあります。

-- sample.12-4 --
/* データの参照 */

SELECT 受注番号, 顧客コード, 商品コード, 受注個数 FROM 受注表
         WHERE 商品コード = '101' AND 受注個数 >= 15 ;

/* 実行結果 */

 受注番号 顧客コード 商品コード 受注個数
 ──── ───── ───── ────
 10002     002        101       20
 10005     003        101       15
 10006     001        101       15
 10008     002        101       20

OR 演算子を使用したデータの参照例を sample.12-5 に示します。受注表から顧客コードが 003 または商品コードが 102 の受注番号、顧客コード、商品コードを参照します。

-- sample.12-5 --
/* データの参照 */

SELECT 受注番号, 顧客コード, 商品コード FROM 受注表
    WHERE 顧客コード = '003' OR 商品コード = '102' ;

/* 実行結果 */

 受注番号 顧客コード 商品コード
 ──── ───── ─────
 10001     001        102
 10005     003        101
 10007     002        102
 10009     001        102
 10010     003        101
 10011     001        102
 10012     003        103

関連記事

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp
  • シナジーマーケティング研究開発グループブログ