すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:制御フロー関数

最終更新日:Sep 14, 2024

制御フロー関数を使用して、SQLクエリの条件を評価できます。 このトピックでは、AnalyticDB for MySQLの制御フロー関数の構文と例について説明します。

サンプルデータ

この例では、conditiontestという名前のテーブルを使用して、制御フロー関数をテストします。

次のステートメントを実行してconditiontestという名前のテーブルを作成し、テーブルにデータを挿入します。

CREATE TABLE conditiontest(a INT) DISTRIBUTED BY HASH(a);
INSERT INTO conditiontest VALUES (1),(2),(3);

CASE

構文1

CASE expression
    WHEN value THEN result
    [WHEN value THEN result ...]
    [ELSE result]
    END   
  • 説明: この関数は、valueパラメーターの値とexpressionパラメーターの値を順番に比較します。 valueパラメーターの値がexpressionパラメーターの値と同じ場合、この関数はvalueパラメーターの結果値を返します。 valueパラメーターの値がexpressionパラメーターの値と同じでない場合、この関数はELSE句で結果の値を返します。

  • 例:

    SELECT a,
          CASE a
          WHEN 1 THEN 'one'
          WHEN 2 THEN 'two'
          ELSE 'three'
          END as caseresult
    FROM conditiontest;

    サンプル結果:

    +---+------------+
    | a | caseresult |
    +---+------------+
    | 2 | two        |
    | 1 | one        |
    | 3 | three      |
    +---+------------+

構文2

CASE
    WHEN condition THEN result
    [WHEN condition THEN result...]
    [ELSE result]
    END
  • 説明: この関数は、conditionパラメーターの値を順番にチェックします。 conditionパラメーターの値がtrueの場合、この関数はconditionパラメーターのresult値を返します。 conditionパラメーターのすべての値がfalseの場合、この関数はELSE句のresult値を返します。

  • 例:

    SELECT a,
          CASE
          WHEN a=1 THEN 'one1'
          WHEN a=2 THEN 'two2'
          ELSE 'three3'
          END as caseresult
    FROM conditiontest;

    サンプル結果:

    +---+------------+
    | a | caseresult |
    +---+------------+
    | 1 | one1       |
    | 3 | three3     |
    | 2 | two2     	 |
    +---+------------+

IF

構文1

IF (条件、true_value)
  • 説明: conditionパラメーターの値がtrueの場合、この関数はtrue_valueパラメーターの値を返します。 それ以外の場合、この関数はnullを返します。

  • 例:

    SELECT IF((2 + 3)>4,5);

    ------- +
    | _col0 |
    + -------
    | 5 | 

構文2

IF (条件、true_value、false_value)
  • 説明: conditionパラメーターの値がtrueの場合、この関数はtrue_valueパラメーターの値を返します。 それ以外の場合、この関数はfalse_valueパラメーターの値を返します。

  • 例:

    SELECT IF((2 + 3)<5,5,6);

    ------- +
    | _col0 |
    + -------
    | 6 | 

IFNULL

IFNULL(expr1,expr2)
  • 説明: expr1パラメーターの値がnullでない場合、この関数はexpr1パラメーターの値を返します。 それ以外の場合、この関数はexpr2パラメーターの値を返します。

  • 例:

    例 1:

    SELECT IFNULL(NULL,2);

    ------- +
    | _col0 |
    + -------
    | 2 |
    + ------- + 

    例 2:

    SELECT IFNULL(1,0);

    ------ +
    | _col0 |
    + -------
    | 1 |
    + ------- + 

NULLIF

NULLIF(expr1,expr2)
  • 説明: expr1パラメーターの値がexpr2パラメーターの値と同じ場合、この関数はnullを返します。 それ以外の場合、この関数はexpr1パラメーターの値を返します。

  • 例:

    例 1:

    SELECT NULLIF (2,1);

    -------
    | _col0 |
    + -------
    | 2 |
    + ------- + 

    例 2:

    SELECT NULLIF (2,2);

    -------
    | _col0 |
    + -------
    | NULL |
    + ------- +