Tous les produits
Search
Centre de documentation

AnalyticDB:Fonctions de contrôle de flux

Dernière mise à jour :Aug 10, 2026

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  |
+-------+