NULLIF と IIF
CoddyのSQLジャーニー「応用」セクションの一部 — レッスン 4/27。
さらに2つの条件付きヘルパーを紹介します。どちらも小さくて便利です。
NULLIF(a, b) は、a = b のときに NULL を返し、それ以外の場合は a を返します。代表的な使い方は、ゼロ除算を防ぐことです。
SELECT total / NULLIF(count, 0) AS average
FROM statscount がゼロの場合、エラーの代わりに NULL が返されます。
IIF(cond, a, b) は CASE WHEN cond THEN a ELSE b END の2分岐のショートカットです。選択肢が2つの場合はこれを使用し、分岐がより多い場合は CASE を使用してください。
チャレンジ
簡単利用可能なテーブルとカラム:
<strong>matches</strong>:<strong>id</strong>,<strong>shots</strong>,<strong>goals</strong>
各試合について以下を返してください:
idconversion:goals * 1.0 / shots。ただし、shotsが0の場合はNULLとします(NULLIFを使用してください)verdict:goals > 0の場合は'win'、それ以外の場合は'no goals'(IIFを使用してください)
id で並べ替えてください。
チートシート
NULLIF(a, b) は a = b のときに NULL を返し、それ以外の場合は a を返します。ゼロ除算を避けるのに便利です:
SELECT total / NULLIF(count, 0) AS average
FROM statsIIF(cond, a, b) は 2 分岐の CASE のショートカットです:
SELECT IIF(goals > 0, 'win', 'no goals') AS verdict
FROM matches自分で試してみよう
SELECT id,
-- NULLIF を使用した変換
-- IIF を使用した判定
FROM matches
ORDER BY id
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。