11章条件付きロジック

状況によっては、特定の列または式の値に応じてSQLロジックを分岐させたいことがあります。SQL文の中には、実行時に検出されたデータに応じて動作を変更できるものがあります。本章では、そのようなSQL文を作成する方法に焦点を合わせます。SQL文の条件付きロジックの仕掛けはcase式にあります。case式はselectinsertupdatedeleteの4つの文で使うことができます。

11.1 条件付きロジックとは何か

条件付きロジックとは、プログラムの実行中に複数のパスの1つを選択できる能力のことです。たとえば、顧客の情報を取得するときにcustomer.active列の値を追加したいとしましょう。この列には、顧客が休眠状態の場合は0、そうではない場合は1の値が含まれています。このクエリの結果をレポートの生成に使う場合、この値のままでは何のことかわからないので、もっと理解しやすい情報に変換したほうがよいかもしれません。データベースにはそれぞれこうした状況に対処するための関数が組み込まれていますが、標準化されているわけではないため、どのデータベースでどの関数を使うのかを覚えておかなければなりません。ありがたいことに、各データベースのSQL実装にはcase式が含まれています。次のような単純な変換を含め、case式はさまざまな状況で役立ちます。

mysql> SELECT first_name, last_name,
    ->   CASE
    ->     WHEN active = 1 THEN 'ACTIVE'
    ->     ELSE 'INACTIVE'
    ->   END activity_type
    -> FROM customer; +-------------+--------------+---------------+ ...

Get 初めてのSQL 第3版 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.