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