リファレンスガイド> TDV SQLスクリプト> SQLスクリプトステートメントリファレンス> CASE
 
CASE
SQLスクリプトのCASEステートメントは、条件のリストを評価し、複数の可能な結果式の1つを返します。 CASEステートメントには2つの有効な形式があります。
構文1
<valueExpression>構文を使用して、式を1回評価してから、一致する値を見つけます。 WHEN句は順番に評価され、最初の一致が使用されます。
CASE <valueExpression>
WHEN <valueExpression> THEN <statements>
[…]
[ELSE <statements>]
END AS <new_column_name>
構文2
<conditionalExpression>構文を使用して、IF/THEN/ELSEIF/ELSEのような一連のテストを評価します。 WHEN句は順番に評価され、最初の一致が使用されます。
CASE
WHEN <conditionalExpression> THEN <statements>
[…]
[ELSE <statements>]
END AS <new_column_name>
述べる
<statements>で示される領域には、0個以上のステートメントが存在する可能性があります。
PROCEDURE get_month_name(OUT month_name VARCHAR)
BEGIN
  CASE MONTH(CURRENT_DATE() )
  WHEN 1 THEN
    SET month_name = 'JAN';
  WHEN 2 THEN
    SET month_name = 'FEB';
  WHEN 3 THEN
    SET month_name = 'MAR';
...
  WHEN 11 THEN
    SET month_name = 'NOV';
  WHEN 12 THEN
    SET month_name = 'DEC';
  END CASE;
END
 
PROCEDURE get_duration(IN seconds INTEGER, OUT result VARCHAR)
BEGIN
  CASE
  WHEN seconds < 60 THEN
    SET result = CAST (
          CONCAT(seconds, ' seconds') AS VARCHAR);
  WHEN seconds < 60*60 THEN
    SET result = CAST (
          CONCAT(seconds/60, ' minutes') AS VARCHAR);
  ELSE
    SET result = CAST (
          CONCAT(seconds/3600, ' hours') AS VARCHAR);
 
  END CASE;
END