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