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.
- Notions
- Questions
- Ranger et relier
- Mises en situation
- 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)ouEXTRACT(YEAR FROM date)donnent autant de valeurs que de lignes lues.SUMouCOUNTré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'CASEs'arrête au premierWHENvrai, et 12 >= 10. Le deuxièmeWHENest inatteignable : il faut tester le seuil le plus haut d'abord (note >= 12avantnote >= 10).Dans un
CASEsans …, une ligne qui ne vérifie aucunWHENreçoit ….Voir la réponse
Dans un
CASEsans ELSE, une ligne qui ne vérifie aucunWHENreçoit NULL.La base ne choisit rien à votre place : le résultat est NULL, pas une chaîne vide ni 0. On ajoute un
ELSEquand 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
WHENvrai, sinon celui duELSE, ou NULL s'il n'y en a pas.CASE WHEN note >= 10 THEN 'admis' ELSE 'ajourné' END. L'ordre desWHENcompte : dès qu'une condition est vraie, les suivantes ne sont plus regardées.La colonne
villecontientLyon,LYONetlyon. 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 quelyon,ville = 'Lyon'queLyon;UPPER(ville) = 'Lyon'ne retrouve rien, un texte en majuscules ne valant jamais'Lyon'.