アットウィキロゴ

DB基礎⑧(フロー制御:IF・CASE)

▼フロー制御①(IF文)▼

  条件がTRUEの場合はTRUEの処理、FALSEの場合はFALSEの処理をする。

SELECT フィールド名,IF(条件文,TRUE処理,FALSE処理) FROM テーブル名;
   ※エイリアスを付ける場合は、IF()に付ける。

例:「staff」テーブルの名前、給与を表示、さらに給与が30万以下のデータは「もうちょっとほしい」、それ以外のデータ「もっと給料上げろ」と表示

   SELECT
name,
salary,
IF(salary <= 300000,
'もうちょっとほしい',
'もっと給料上げろ') AS message
   FROM staff;

以下のように表示、

  ⇒IF.bmp

※IF(salary <= 300000,'もうちょっとほしい','もっと給料上げろ')の命令によって、表示する際に新たにフィールドが作られる。
 ⇒データが増えるわけではないので注意


▼フロー制御②(CASE文)▼

  ●複数条件の場合※PHPのelseif、switchに相当
CASE
	WHEN 条件1 THEN 条件1のTRUE処理
	WHEN 条件2 THEN 条件2のTRUE処理
	WHEN 条件3 THEN 条件3のTRUE処理
	ELSE FALSE処理
END

  ※CASE~ENDまでは分かり易いように()括弧でくくったほうが良い

例:「staff」テーブルの部署番号が1の場合は「経理」、2の場合は「営業」、3の場合は「開発」と表示せよ。

  SELECT name, section_id,
(CASE
	WHEN section_id = 1 THEN '経理'
	WHEN section_id = 2 THEN '営業'
	WHEN section_id = 3 THEN '開発'
	ELSE NULL
END) AS section_name
  FROM staff;

以下のように表示、

  ⇒CASE.bmp

※IF文の時同様、section_nameというフィールドが表示する際に作られ、
最終更新:2012年01月19日 23:23
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。