リファレンスガイド> SQL演算子のTDVサポート> 条件演算子> CASE
 
CASE
CASE演算子は、いくつかの条件を評価し、最初に一致した条件に対して単一の値を返すために使用されます。 CASE式は、多くのプログラミング言語で使用されるIF-THEN-ELSEまたはSWITCHステートメントに似ています。ただし、SQLでは、CASEは式であり、ステートメントではありません。
CASEには2つの形式があります。
簡単なケース
検索されたケース
シンプルなケース
単純なCASEは、式を一連の単純な式と比較します。
構文
CASE <comparison-value>
WHEN <conditional-expression 1> THEN <scalar-expression 1>
WHEN <conditional-expression 2> THEN <scalar-expression 2>
WHEN <conditional-expression 3> THEN <scalar-expression 3>
[ELSE <default-scalar-expression>]
END
備考
CASEを使用すると、基になる値の代替値を表すことができます。たとえば、基になる値がコード(1、2、3など)の場合、基になる値に影響を与えることなく、人間が読み取れる文字列値(Small、Medium、Large)として表示できます。
いずれのテスト条件も真でない場合、CASEは、オプションのELSEケース(指定されている場合)に含まれる結果を返します。
一致するものが見つからず、ELSEが指定されていない場合、デフォルトでELSENULLが想定されます。
SELECT ProductID, Status, UnitPrice,
CASE Status
WHEN 'open' THEN UnitPrice * 1.10
WHEN 'closed' THEN UnitPrice * 1
ELSE UnitPrice
END
AS "New Price"
FROM /shared/examples/ds_orders/orderdetails
検索されたケース
検索されたCASEは、式を論理式のセットと比較します。
構文
CASE
WHEN <conditional_expression_1> THEN <scalar_expression_1>
WHEN <conditional_expression_2> THEN <scalar_expression_2>
WHEN <conditional_expression_3> THEN <scalar_expression_3>
[ELSE <default_scalar_expression>]
END
SELECT ProductID, UnitPrice
CASE
WHEN UnitPrice <=100 THEN 'Between $1 and $100.00'
WHEN UnitPrice <=200 THEN 'Between $100.01 and $200.00'
ELSE 'Over $200.00'
END
AS "Price Range"
FROM /shared/examples/ds_orders/orderdetails
 
SELECT ProductID, UnitPrice
CASE
WHEN UnitPrice > 400 THEN 'Above 400.00'
WHEN UnitPrice >=300 THEN 'Between 300 and 400.00'
END
AS "Price Range"
FROM /shared/examples/ds_orders/orderdetails