logo

SQL | Expressions conditionnelles

Voici les expressions conditionnelles en SQL

    L'expression CASE : vous permet d'utiliser des instructions IF-THEN-ELSE sans avoir à invoquer de procédures.
    Dans une expression CASE simple, le SQL recherche la première paire WHEN……THEN pour laquelle expr est égale à comparative_expr et renvoie return_expr. Si la condition ci-dessus n'est pas satisfaite, une clause ELSE existe, le SQL renvoie else_expr. Sinon, renvoie NULL.
    Nous ne pouvons pas spécifier la valeur null littérale pour return_expr et else_expr. Toutes les expressions (expr, comparative_expr, return_expr) doivent être du même type de données.
    Syntaxe:



     CASE expr WHEN comparison_expr1 THEN return_expr1 [ WHEN comparison_expr2 THEN return_expr2 . . . WHEN comparison_exprn THEN return_exprn ELSE else_expr] END>

    Exemple:

       Input : SELECT first_name, department_id, salary, CASE department_id WHEN 50 THEN 1.5*salary WHEN 12 THEN 2.0*salary ELSE salary END 'REVISED SALARY' FROM Employee;>

      Sortir :

    Explication : Dans les instructions SQL ci-dessus, la valeur de Department_id est décodée. S'il est de 50, le salaire est multiplié par 1,5, s'il est de 12, le salaire est multiplié par 2, sinon il n'y a pas de changement de salaire. La fonction DECODE : facilite les enquêtes conditionnelles en effectuant le travail d'une instruction CASE ou IF-THEN-ELSE.
    La fonction DECODE décode une expression d'une manière similaire à la logique IF-THEN-ELSE utilisée dans divers langages. La fonction DECODE décode l'expression après l'avoir comparée à chaque valeur de recherche. Si l'expression est identique à la recherche, le résultat est renvoyé.
    Si la valeur par défaut est omise, une valeur nulle est renvoyée lorsqu'une valeur de recherche ne correspond à aucune des valeurs de résultat.
    Syntaxe:



     DECODE (col/expression, search1, result1 [, search2, result2,........,] [, default])>
     Input : SELECT first_name, department_id, salary, DECODE(department_id, 50, 1.5*salary, 12, 2.0*salary, salary) 'REVISED SALARY' FROM Employee;>

    Sortir :

    Explication: Dans les instructions SQL ci-dessus, la valeur de Department_id est testée. S'il est de 50, le salaire est multiplié par 1,5, s'il est de 12, le salaire est multiplié par 2, sinon il n'y a pas de changement de salaire.

    COALESCE : Renvoie le premier argument non nul. Null est renvoyé uniquement si tous les arguments sont nuls. Il est souvent utilisé pour remplacer une valeur par défaut par des valeurs nulles lorsque les données sont récupérées pour être affichées.
    REMARQUE : comme les expressions CASE, COALESCE n'évaluera pas non plus les arguments à droite du premier argument non nul trouvé.
    Syntaxe:

     COALESCE( value [, ......] )>
     Input: SELECT COALESCE(last_name, '- NA -') from Employee;>

    Sortir:

    Explication: - NA - sera affiché à l'endroit où le nom de famille est nul, sinon les noms de famille respectifs seront affichés. GREATEST : renvoie la plus grande valeur d'une liste d'un nombre quelconque d'expressions. La comparaison est sensible à la casse. Si les types de données de toutes les expressions de la liste ne sont pas identiques, toutes les expressions sont converties au type de données de la première expression à des fins de comparaison et si cette conversion n'est pas possible, SQL générera une erreur.
    NOTE: Renvoie null si une expression de la liste est nulle.
    Syntaxe:



     GREATEST( expr1, expr2 [, .....] )>
    •  Input: SELECT GREATEST('XYZ', 'xyz') from dual;>
       Output: GREATEST('XYZ', 'xyz') xyz>

      Explication: La valeur ASCII des petits alphabets est plus grande.

    •  Input: SELECT GREATEST('XYZ', null, 'xyz') from dual; Output: GREATEST('XYZ', null, 'xyz') ->

      Explication: Puisque null est présent, null sera affiché en sortie (comme mentionné dans la description ci-dessus).

    IFNULL : si expr1 n'est pas NULL, renvoie expr1 ; sinon, il renvoie expr2. Renvoie une valeur numérique ou chaîne, selon le contexte dans lequel elle est utilisée.
    Syntaxe:

     IFNULL( expr1, expr2 )>
    •  Input: SELECT IFNULL(1,0) FROM dual;>
       Output: - 1>

      Explication : Depuis, aucune expression n’est nulle.

    •  Input: SELECT IFNULL(NULL,10) FROM dual; Output: -- 10>

      Explication: Puisque expr1 est nul, expr2 est donc affiché.

      installation de la torche
    IN : Vérifie si une valeur est présente dans un ensemble de valeurs et peut être utilisée avec WHERE, CHECK et la création de vues.
    REMARQUE : comme les expressions CASE et COALESCE, IN n'évaluera pas non plus les arguments à droite du premier argument non nul trouvé.
    Syntaxe:

     WHERE column IN ( x1, x2, x3 [,......] )>
     Input: SELECT * from Employee WHERE department_id IN(50, 12);>

    Sortir:

    Explication: Toutes les données des employés sont affichées avec l'ID de service 50 ou 12.

    LEAST : renvoie la plus petite valeur d’une liste d’un nombre quelconque d’expressions. La comparaison est sensible à la casse. Si les types de données de toutes les expressions de la liste ne sont pas identiques, toutes les expressions restantes sont converties au type de données de la première expression à des fins de comparaison et si cette conversion n'est pas possible, SQL générera une erreur.
    REMARQUE : renvoie null si une expression de la liste est nulle.

    Syntaxe:

     LEAST( expr1, expr2 [, ......] )>
    •  strong>Entrée : SELECT LEAST('XYZ', 'xyz') from dual ; Sortie : MOINS('XYZ', 'xyz') XYZ>

      Explication: La valeur ASCII des alphabets majuscules est plus petite.

    •  Input: SELECT LEAST('XYZ', null, 'xyz') from dual; Output: LEAST('XYZ', null, 'xyz') ->

      Explication: Puisque null est présent, null sera affiché en sortie (comme mentionné dans la description ci-dessus).

    NULLIF : renvoie une valeur nulle si valeur1=valeur2, sinon il renvoie valeur1.
    Syntaxe:

     NULLIF( value1, value2 )>

    Exemple:

     Input: SELECT NULLIF(9995463931, contact_num) from Employee;>

    Sortir:

Explication: NULL est affiché pour l'employé dont le numéro correspond au numéro donné. Pour le reste des employés, la valeur 1 est renvoyée.