Fonctions et CASE

Les fonctions scalaires usuelles (chaînes, nombres, dates, CAST) et l'expression CASE, simple ou à conditions, y compris dans un agrégat : prévoir ce que rend chaque expression, NULL compris.

  • 22 cartes
  • 5 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Mises en situation
  5. Comprendre

Quelques cartes du deck

  • Fonction scalaire : de quoi s'agit-il ?

    Voir la réponse

    Fonction appliquée aux valeurs d'une ligne, qui rend une valeur par ligne : contrairement à un agrégat, elle ne réduit pas le nombre de lignes.

    UPPER(nom), ROUND(prix, 2) ou EXTRACT(YEAR FROM date) donnent autant de valeurs que de lignes lues. SUM ou COUNT résument, elles, toute la table ou un groupe.

  • Que rend ce CASE pour note = 12 ?

    ```sql
    CASE
    WHEN note >= 10 THEN 'Passable'
    WHEN note >= 12 THEN 'Assez bien'
    ELSE 'Ajourné'
    END
    `

    • 'Passable'
    • 'Assez bien'
    • 'Ajourné'
    • NULL
    Voir la réponse

    'Passable'

    CASE s'arrête au premier WHEN vrai, et 12 >= 10. Le deuxième WHEN est inatteignable : il faut tester le seuil le plus haut d'abord (note >= 12 avant note >= 10).

  • Dans un CASE sans …, une ligne qui ne vérifie aucun WHEN reçoit ….

    Voir la réponse

    Dans un CASE sans ELSE, une ligne qui ne vérifie aucun WHEN reçoit NULL.

    La base ne choisit rien à votre place : le résultat est NULL, pas une chaîne vide ni 0. On ajoute un ELSE quand on veut une valeur par défaut.

  • CASE à conditions : de quoi s'agit-il ?

    Voir la réponse

    Expression qui teste des conditions dans l'ordre et rend le résultat du premier WHEN vrai, sinon celui du ELSE, ou NULL s'il n'y en a pas.

    CASE WHEN note >= 10 THEN 'admis' ELSE 'ajourné' END. L'ordre des WHEN compte : dès qu'une condition est vraie, les suivantes ne sont plus regardées.

  • La colonne ville contient Lyon, LYON et lyon. Quelle condition retrouve les trois ?

    • WHERE ville = LOWER('Lyon')
    • WHERE LOWER(ville) = 'lyon'
    • WHERE UPPER(ville) = 'Lyon'
    • WHERE ville = 'Lyon'
    Voir la réponse

    WHERE LOWER(ville) = 'lyon'

    Il faut mettre les deux côtés dans la même casse. LOWER(ville) est toujours en minuscules, donc comparé à 'lyon'. ville = LOWER('Lyon') ne retrouve que lyon, ville = 'Lyon' que Lyon ; UPPER(ville) = 'Lyon' ne retrouve rien, un texte en majuscules ne valant jamais 'Lyon'.