Les fonctions de contrôle de flux permettent d'évaluer des conditions directement dans les requêtes SQL. AnalyticDB for MySQL prend en charge quatre fonctions : CASE, IF, IFNULL et NULLIF.
| Fonction | Description |
|---|---|
CASE |
Renvoie un résultat selon les conditions correspondantes. Prend en charge deux formes : simple (correspondance de valeur) et recherchée (expression booléenne). |
IF |
Renvoie une valeur si la condition est vraie, une autre si elle est fausse ou NULL. |
IFNULL |
Renvoie la première expression si elle n'est pas NULL ; sinon, renvoie la seconde. |
NULLIF |
Renvoie NULL si les deux expressions sont égales ; sinon, renvoie la première expression. |
Données d'exemple
Les exemples de cette rubrique utilisent une table nommée conditiontest. Exécutez les instructions suivantes pour créer la table et insérer des données d'exemple :
CREATE TABLE conditiontest(a INT) DISTRIBUTED BY HASH(a);
INSERT INTO conditiontest VALUES (1),(2),(3);
CASE
La fonction CASE possède deux formes : simple et recherchée.
CASE simple
CASE expression
WHEN value THEN result
[WHEN value THEN result ...]
[ELSE result]
END
Compare l'expression à chaque value dans l'ordre. Renvoie le result de la première branche WHEN correspondante. Si aucune value ne correspond, renvoie le result de la clause ELSE.
Exemple :
SELECT a,
CASE a
WHEN 1 THEN 'one'
WHEN 2 THEN 'two'
ELSE 'three'
END as caseresult
FROM conditiontest;
Résultat :
+---+------------+
| a | caseresult |
+---+------------+
| 2 | two |
| 1 | one |
| 3 | three |
+---+------------+
CASE recherché
CASE
WHEN condition THEN result
[WHEN condition THEN result...]
[ELSE result]
END
Évalue chaque condition dans l'ordre. Renvoie le result de la première condition évaluée à vrai. Si toutes les conditions sont fausses, renvoie le result de la clause ELSE.
Exemple :
SELECT a,
CASE
WHEN a=1 THEN 'one1'
WHEN a=2 THEN 'two2'
ELSE 'three3'
END as caseresult
FROM conditiontest;
Résultat :
+---+------------+
| a | caseresult |
+---+------------+
| 1 | one1 |
| 3 | three3 |
| 2 | two2 |
+---+------------+
IF
Forme à deux arguments
IF(condition, true_value)
Renvoie true_value si la condition est vraie. Renvoie NULL si la condition est fausse ou NULL.
Exemple — la condition est vraie :
SELECT IF((2+3)>4,5);
Résultat :
+-------+
| _col0 |
+-------+
| 5 |
Forme à trois arguments
IF(condition, true_value, false_value)
Renvoie true_value si la condition est vraie. Renvoie false_value si la condition est fausse ou NULL.
Exemple — la condition est fausse :
SELECT IF((2+3)<5,5,6);
Résultat :
+-------+
| _col0 |
+-------+
| 6 |
IFNULL
IFNULL(expr1, expr2)
Renvoie expr1 si cette expression n'est pas NULL. Renvoie expr2 si expr1 est NULL.
Exemple 1 — expr1 est NULL :
SELECT IFNULL(NULL,2);
Résultat :
+-------+
| _col0 |
+-------+
| 2 |
+-------+
Exemple 2 — expr1 n'est pas NULL :
SELECT IFNULL(1,0);
Résultat :
+-------+
| _col0 |
+-------+
| 1 |
+-------+
NULLIF
NULLIF(expr1, expr2)
Renvoie NULL si expr1 est égal à expr2. Renvoie expr1 dans le cas contraire.
Exemple 1 — les expressions ne sont pas égales :
SELECT NULLIF(2,1);
Résultat :
+-------+
| _col0 |
+-------+
| 2 |
+-------+
Exemple 2 — les expressions sont égales :
SELECT NULLIF(2,2);
Résultat :
+-------+
| _col0 |
+-------+
| NULL |
+-------+