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);