制御フロー関数を使用して、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 | + ------- +