SQLアタマアカデミー
第8回 SQLにおける論理演算~なぜ真理を隠すのか~ (2)SQLでブール式を使うと
SQLでブール式を使うと
真理値型をサポートしているDBMSの場合
各DBMSにおける真理値型のサポートが遅れているという状況は,
図3 人名,
name (名前) | state (国) |
太郎 | Japan |
ジョン | USA |
カール | Germany |
ギャビー | Mexico |
源三郎 | Japan |
パオロ | Italia |
もしSQLがSELECT句でブール式の評価をサポートしていれば,
リスト1 君,
SELECT name,
(state = 'Japan') AS Livin_in_Japan
FROM Names;
図4 リスト1の結果
name Livin_in_Japan --------- ---------------- 太郎 true ジョン false カール false ギャビー false 源三郎 true パオロ false
真理値型をサポートしていないDBMSの場合
しかし,
もし真理値をサポートしないDBで同じような結果が欲しいと思うなら,
リスト2 君,
SELECT name,
CASE WHEN state = 'Japan'
THEN 'true' ELSE 'false' END AS Livin_in_Japan
FROM Names;
これはすべてのDBで実行できます。ただし,
これはDBエンジニアにとって大きなデメリットです。プログラミング言語から論理演算を奪うというのは,
ビット演算で代用する
実はここに1つ,
- 論理演算 ビット演算
- AND → かけ算
- OR → 足し算
そうすると,
それでは,
バックナンバー
SQLアタマアカデミー
- 最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (5)集合指向と手続き型
- 最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (4)OLAP関数と集約関数を組み合わせる
- 最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (3)OLAP専用関数
- 最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (2)OLAP関数の基本構文
- 最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (1)OLAP関数とは何か
- 第10回 結合大全 (5)非等値結合
- 第10回 結合大全 (4)自己結合
- 第10回 結合大全 (3)外部結合
- 第10回 結合大全 (2)内部結合
- 第10回 結合大全 (1)クロス結合