J'apprends psql, et je suis plutôt confondu avec le mot clé CASE.psql: utilisation de CASE
Dites que j'ai une table "pets".
name | species | owner | gender | color
-------------+---------+--------------------+--------+---------------
Nagini | snake | Lord Voldemort | female | green
Hedwig | owl | Harry Potter | female | snow white
Scabbers | rat | Ron Weasley | male | unspecified
Pigwidgeon | owl | Ron Weasley | male | grey
Crookshanks | cat | Herminone Granger | male | ginger
Mrs Norris | cat | Argus Filch | female | dust-coloured
Trevor | toad | Neville Longbottom | male | brown
on me demande de « Utiliser CASE pour afficher les noms des animaux et une colonne pour indiquer si est long ou court le nom de l'animal (un nom long est strictement plus de 6 caractères). Filtre pour sélectionner femme seule animaux domestiques."
Le document officiel ne donne que des exemples utilisant CASE seul. Lorsque je tente de résoudre le problème, j'ai essayé
SELECT *
CASE
WHEN name > 6 THEN
msg:= 'long'
ELSE
msg:= 'short'
END CASE
FROM pets WHERE gender = 'female';
qui m'a donné une erreur ERROR: syntax error at or near "CASE"
Puis-je combiner le cas avec instruction SELECT? Si oui comment? Si non, comment pourrais-je résoudre la tâche ci-dessus?
Avez-vous vu https://www.postgresql.org/docs/8.4/static/functions-conditional.htm? Vous avez besoin d'une expression de cas plutôt que d'une déclaration de cas pour votre cas, ce qui vous donnera une autre colonne de résultat. Et ajouter la colonne après * sans une virgule pour la séparer ne fonctionnera pas non plus même si ce n'était pas une expression de casse. – Mic