はじめに
真理値と論理演算の重要性
プログラマやSEのみなさんは,
SQLにおける真理値と論理演算
SQLにも,
では,
本稿を読んで初めてこの話題について知ることになる人は,
それでも,
- 読者対象
- 真理値と言えばtrueとfalseしかないと思っている人
「3値論理」 は知っていたけど, 第3の値をNULLだと思っている人 - SQLで真理値と論理演算の存在を意識したことのない人
- 稼働環境
- すべてのリレーショナルデータベース
- 注1)
- SQLの原型となる言語が誕生したのは,
1970年代前半, IBMのSystem Rという実装においてです (「A History and Evaluation of System R」)。
各DBの真理値型のサポート
DBによりサポート状況/ 扱い方が異なる
真理値型の列を持つテーブルを作るのはとても簡単で,
-
CREATE TABLE BOOL_
TEST (bl BOOLEAN);
これで,
図1 BMS 真理値型のサポート状況
DBMS | 真理値型のサポート |
PostgreSQL 8. | サポートする。ただし, |
MySQL 5. | サポートする。ただし, |
Oracle 11g | サポートしない |
SQL Server 2008 | サポートしない |
DB2 9. | サポートしない |
しかも,
-
INSERT INTO BOOL_
TEST VALUES (true);
INSERT INTO BOOL_TEST VALUES (false);
しかし,
次のINSERTは,
-
INSERT INTO BOOL_
TEST VALUES (unknown);
- 注2)
- 「PostgreSQLでは,
標準SQLのboolean型が提供されています。booleanは"真"もしくは"偽"という2つしかない値のどちらかを取ることができます。第3の状態である"不明"はSQLのNULL値で表現されます。」 (「8. 6.論理値データ型」 『PostgreSQL 8. 3.7文書』)