|
CASE 式は値を返します。CASE 式には 2 つの形式があります。
どちらの形式もオプションの ELSE 引数をサポートしています。ELSE 句を使用しない場合は、ELSE NULL であることを意味します。
単一 When/Then:
検索 When/Then:
case値式 ::= 単一 When/Then 形式の CASE で評価される式。 when式 ::= case 値式と比較される式。case 値式と各 when 式のデー タ型は同じであるか、または暗黙に型変換されなければなりません。 then式 ::= case 値式 = when 式が TRUE と評価された場合に返され る式。 else式 ::= TRUE と評価される比較演算がない場合に返される式。この 引数を省略した場合、TRUE と評価される比較演算がなければ、 CASE は NULL を返します。 検索式 ::= 検索形式の CASE で評価されるブール式。検索式には、有効 なブール式であればどのような式でも指定できます。
CASE 式は SELECT ステートメント内で使用する必要があります。SELECT ステートメントはストアド プロシージャやビュー内に記述できます。
次のステートメントは、単一 When/Then 形式を使って、Course テーブルにリストされている美術講座の必須条件をレポートします。
SELECT name 'Course ID', description 'Course Title', CASE name WHEN 'Art 101' THEN 'None' WHEN 'Art 102' THEN 'Art 101 or instructor approval' WHEN 'Art 203' THEN 'Art 102' WHEN 'Art 204' THEN 'Art 203' WHEN 'Art 305' THEN 'Art 101' WHEN 'Art 406' THEN 'None' WHEN 'Art 407' THEN 'Art 305' END AS 'Prerequisites' FROM Course WHERE Dept_Name = 'Art' ORDER BY name
このクエリによって次の一覧が返されます。
前のステートメントに ELSE 句を含めるように変更できます。
SELECT name 'Course ID', description 'Course Title', CASE name WHEN 'Art 101' THEN 'None' WHEN 'Art 102' THEN 'Art 101 or instructor approval' WHEN 'Art 203' THEN 'Art 102' WHEN 'Art 204' THEN 'Art 203' WHEN 'Art 305' THEN 'Art 101' ELSE 'Curriculum plan for Art History majors' END AS 'Prerequisites' FROM Course WHERE Dept_Name = 'Art' ORDER BY name
このクエリによって今度は次の一覧が返されます。
次のステートメントでは検索 When/Then 形式を使って、個人別に資格のある奨学金プログラムをレポートします。
SELECT last_name, first_name, CASE WHEN scholarship = 1 THEN 'Scholastic' WHEN citizenship <> 'United States' THEN 'Foreign Study' WHEN (date_of_birth >= '1960-01-01' AND date_of_birth <= '1970-01-01') THEN 'AJ-44 Funds' ELSE 'NONE' END AS 'Funding Program' FROM Person ORDER BY last_name
以下に、このクエリによって返される一覧の一部を示します。
次の例は、ストアド プロシージャ内で CASE 式を使用する方法を示します。
CREATE PROCEDURE pcasetest () RETURNS (d1 CHAR(10), d2 CHAR(10)); BEGIN SELECT c1, CASE WHEN c1 = 1 THEN c4 WHEN c1 = 2 THEN c5 ELSE CASE WHEN c2 = 100.22 THEN c4 WHEN c2 = 101.22 THEN c5 END END FROM tcasetest; END CALL pcasetest
次の例は、ビュー内で CASE 式を使用する方法を示します。
CREATE VIEW vcasetest (vc1, vc2) AS SELECT c1, CASE WHEN c1 = 1 THEN c4 WHEN c1 = 2 THEN c5 ELSE CASE WHEN c2 = 100.22 THEN c4 WHEN c2 = 101.22 THEN c5 END END FROM TCASEWHEN SELECT * FROM vcasetest
|