FirebirdSQL logo
Simple CASE
Syntaxe
CASE <test-expr>
  WHEN <expr> THEN <result>
  [WHEN <expr> THEN <result> ...]
  [ELSE <defaultresult>]
END

Avec cette variante, la test-expr est comparée à la première expr,puis le deuxième expr, et ainsi de suite,jusqu’à ce qu’une correspondance soit trouvée, auquel cas le résultat correspondant est renvoyé.Si aucune correspondance n’est trouvée, le résultat par défaut de la branche ELSE est retourné.S’il n’y a pas de correspondance et que la branche ELSE est manquante, il retourne NULL.

Une correspondance est équivalente à l’opérateur “=”, c’est-à-dire queSi test-expr a la valeur NULL, alors il ne correspond à aucune des expr, même celles qui ont la valeur NULL.

Les résultats ne doivent pas nécessairement être des valeurs littérales, ils peuvent aussi être des noms de champs, des variables, des expressions complexes ou des NULL.

Example 1. En utilisant un simple CASE
SELECT
  NAME,
  AGE,
  CASE UPPER(SEX)
    WHEN 'M' THEN 'Male'
    WHEN 'F' THEN 'Female'
    ELSE 'Unknown'
  END AS SEXNAME,
  RELIGION
FROM PEOPLE

Une forme abrégée de l’opérateur CASE simple est utilisée dans la fonction DECODE.

Recherche CASE
Syntaxe
CASE
  WHEN <bool_expr> THEN <result>
  [WHEN <bool_expr> THEN <result> …]
  [ELSE <defaultresult>]
END

Ici <bool_expr> est une expression qui donne un triple résultat logique : TRUE, FALSE ou NULL.La première expression qui retourne TRUE définit le résultat.Si aucune expression ne retourne TRUE, le résultat par défaut de la branche ELSE est pris comme résultat.Si aucune expression ne retourne TRUE et qu’il n’y a pas de branche ELSE, le résultat est NULL.

Comme avec l’instruction simple CASE, les résultats ne doivent pas nécessairement être des valeurs littérales : ils peuvent être des champs ou des noms de variables, des expressions complexes ou NULL.

Example 1. Utilisation d’un moteur de recherche CASE
CANVOTE = CASE
  WHEN AGE >= 18 THEN 'Yes'
  WHEN AGE < 18 THEN 'No'
  ELSE 'Unsure'
END;