SQL CASE
SQL CASE 式
CASE 式は条件を逐次評価し、最初に条件が満たされた時点で値を返します(if-then-else 文のようなものです)。したがって、条件が true の場合はその結果を返し、以降の条件は評価されません。すべての条件が false の場合、ELSE 句の値が返されます。
もしELSE 部分がなく、どの条件も満たされない場合はNULLが返されます。
CASE 構文
CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    WHEN conditionN THEN resultN
    ELSE result
END;デモ データベース
以下はNorthwind サンプルデータベースの”OrderDetails” テーブルからの選択です:
| OrderDetailID | OrderID | ProductID | Quantity | 
|---|---|---|---|
| 1 | 10248 | 11 | 12 | 
| 2 | 10248 | 42 | 10 | 
| 3 | 10248 | 72 | 5 | 
| 4 | 10249 | 14 | 9 | 
| 5 | 10249 | 51 | 40 | 
SQL CASE の例
以下のSQLは条件を逐次評価し、最初に条件が満たされた場合に値を返します:
SELECT OrderID, Quantity,
CASE
    WHEN Quantity > 30 THEN '数量は30より大きいです'
    WHEN Quantity = 30 THEN '数量は30です'
    ELSE '数量は30未満です'
END AS QuantityText
FROM OrderDetails;以下のSQLは顧客をCityで並べ替えます。ただし、CityがNULLの場合はCountryで並べ替えます:
SELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
    WHEN City IS NULL THEN Country
    ELSE City
END);