Q1次のうち、IIF(条件式, X, Y)の説明として正しいものはどれですか。
関数 ④ — IF / IIF で 1 条件の分岐表示
この記事は、基礎から複雑なSQL,SQLチューニングまでSQLの実践的なスキルを1からマスターする「SQL入門講座の一部」です。
IF/IIFで1条件を真偽分岐する書き方、行を消すWHEREとの違い、LIKEやANDとの組み合わせまで、CSVの社員データで実行しながら学べます。
本記事で使うデータ — staff テーブル
ここまで関数を 3 本にわたって学んできましたが、本記事と次の 2 本では条件分岐で表示内容を切り替える書き方を扱います。同じ列の値でも、ある条件を満たすかどうかで「高給」「通常」のような分類ラベルを付けたり、複数の値を 1 つの結果列にまとめたりできるようになります。
IF / IIF — 1 つの条件で値を切り替える
条件式に応じて表示する値を切り替える、もっとも基本の関数がIF / IIFです。書き方は次のとおりで、両者は完全に同じ意味です。
- MySQL: IF(条件式, 真のときの値, 偽のときの値)
- 本講座のコンソール / SQL Server: IIF(条件式, 真のときの値, 偽のときの値)
本講座のコンソールにはIF関数が無いので、本記事の演習ではIIFを使います。WHERE と違って行を絞り込まずに、結果列の値だけを変える役割なので、「全行を残しつつ、列の値ごとに表示ラベルを変えたい」場面で使います。
-- 1) リテラルでの動作確認
SELECT IIF(100 < 200, '真', '偽'); -- '真'
SELECT IIF(500 > 1000, '真', '偽'); -- '偽'
-- 2) 列を使った例 — city が Tokyo なら「本社」、それ以外は「支社」
SELECT name, city,
IIF(city = 'Tokyo', '本社', '支社') AS office
FROM staff;
-- 参考: MySQL では IF()
-- SELECT IF(city = 'Tokyo', '本社', '支社') FROM staff;
WHERE と IF の役割の違い — 行を消す vs 値を変える
WHEREとIFはどちらも条件式を書きますが、結果はまったく異なります。
- WHERE: 条件が TRUE の行だけ残し、FALSE / NULL の行は消す
- IF / IIF: すべての行を残し、列の値だけ条件で入れ替える
両者は組み合わせて使えます。「東京在住の社員だけ表示し、その人ごとに給料ランクを高給 / 通常で分けたい」のように、まずWHEREで行を絞り、続くSELECTの列リストでIIFを使って表示変換する、というのが典型的な書き方です。
-- WHERE と IIF を組み合わせる
-- 1) WHERE で大阪在住の社員だけに絞り込む
-- 2) IIF で給料 6,000,000 以上を「シニア」に分類
SELECT name, salary,
IIF(salary >= 6000000, 'シニア', '一般') AS grade
FROM staff
WHERE city = 'Osaka';
LIKE や AND との組み合わせ、ORDER BY / LIMIT との重ね方
IIFの条件式には WHERE と同じ式が書けるので、LIKE(パターンマッチ)やAND / OR(複合条件)と組み合わせられます。「名前にTanakaを含むなら田中姓ラベル」「30 歳以上かつ Tokyo 在住ならエース」のような分岐も 1 行で書けます。
結果列に付けたAS 別名はORDER BYの対象にも使えるので、IIFで生成したラベル列で並び替えたり、続けてLIMITで件数制限したりするのが、実務でのレポート出力の基本パターンです。
-- 1) IIF + LIKE: 苗字が Tanaka なら '田中姓'
SELECT name,
IIF(name LIKE '%Tanaka', '田中姓', 'その他') AS surname_check
FROM staff;
-- 2) IIF + AND: 年齢相当 + 都市の複合条件
SELECT name, birthday, city,
IIF(strftime('%Y', birthday) <= '1989' AND city = 'Osaka',
'大阪のシニア', 'その他') AS tag
FROM staff;
理解度チェック
まずは1問ずつ答えてみましょう。
Q2WHEREとIIFの役割の違いとして正しいものはどれですか。
Q3MySQL のIF(salary >= 5000000, '高給', '通常')を本講座のコンソールで動かすときの正しい書き換えはどれですか。