Expressions conditionnelles en langage SQL standard

Les expressions conditionnelles imposent des contraintes sur l'ordre d'évaluation de leurs entrées. En substance, elles sont évaluées de gauche à droite (avec possibilité de court-circuitage) et l'évaluation ne porte que sur la valeur de sortie qui a été choisie. Par opposition, les entrées des fonctions standards sont quant à elles toutes évaluées avant l'appel de la fonction. L'option de court-circuitage disponible avec les expressions conditionnelles peut être exploitée pour la gestion des erreurs ou l'optimisation des performances.

Syntaxe Types de données d'entrée Type de données de résultat Description

CASE expr
  WHEN value THEN result
  [WHEN ...]
  [ELSE else_result]
  END
expr et value : tous les types result et else_result : supertype de types d'entrée. Compare successivement expr à la valeur de chaque clause WHEN et retourne le premier résultat où cette comparaison renvoie "true". Les clauses WHEN restantes et else_result ne sont pas évalués. Si la comparaison expr = value renvoie "false" ou NULL pour toutes les clauses WHEN, la fonction renvoie else_result si celui-ci est présent et NULL s'il ne l'est pas. Les expressions expr et value doivent pouvoir être converties implicitement (coercition) en un supertype commun ; les comparaisons d'égalité sont effectuées sur des valeurs "contraintes". Les expressions result et else_result doivent pouvoir être converties (coercition) en un supertype commun.

CASE
  WHEN cond1 THEN result
  [WHEN cond2...]
  [ELSE else_result]
  END
cond : BOOL result et else_result : supertype de types d'entrée. Évalue successivement la condition cond de chaque clause WHEN et renvoie le premier résultat où la condition est "true" ; les clauses WHEN restantes et else_result ne sont pas évalués. Si toutes les conditions sont "false" ou NULL, la fonction renvoie else_result si celui-ci est présent et NULL s'il ne l'est pas. Les expressions result et else_result doivent pouvoir être converties implicitement (coercition) en un supertype commun.
COALESCE(expr1, ..., exprN) Tous les types Supertype de types d'entrée. Renvoie la valeur de la première expression non nulle. Les expressions restantes ne sont pas évaluées. Toutes les expressions en entrée doivent pouvoir être converties implicitement (coercition) en un supertype commun.
IF(cond, true_result, else_result) cond : BOOL true_result et else_result : tous les types. Si cond est "true", la fonction renvoie true_result, sinon elle renvoie else_result. else_result n'est pas évalué si cond est "true". true_result n'est pas évalué si cond est "false" ou NULL. true_result et else_result doivent pouvoir être convertis implicitement (coercition) en un supertype commun.
IFNULL(expr, null_result) Tous les types Tous les types ou supertype de types d'entrée. Si expr est NULL, la fonction renvoie null_result. Sinon, elle renvoie expr. Si expr n'est pas NULL, null_result n'est pas évalué. expr et null_result doivent pouvoir être convertis implicitement (coercition) en un supertype commun. Synonyme de COALESCE(expr, null_result).
NULLIF(expression, expression_to_match) Tout type T ou sous-type de T Tout type T ou sous-type de T Renvoie NULL si expression = expression_to_match est "true", renvoie expression dans le cas contraire. expression et expression_to_match doivent pouvoir être convertis implicitement (coercition) en un supertype commun ; la comparaison d'égalité est effectuée sur des valeurs "contraintes".
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Besoin d'aide ? Consultez notre page d'assistance.