Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
Lors d'une requête avec jointures (LEFT JOIN) pour rassembler des colonnes issues de différentes tables, je me retrouve avec le problème suivant : mon résultat de requête affiche les libellés « f » ou « t » alors que les champs booléens contiennent les libellés TRUE ou FALSE dans les tables. Je ne trouve pas d'explication dans la doc, sinon que plusieurs libellés sont possibles... Deux questions me viennent :
1. Est-il possible de corriger ça pour obtenir TRUE ou FALSE dans le résultat de requête également ?
2. Est-il possible de manière générale de déterminer les libellés à afficher ?
Merci pour votre aide !
Thomas
Dernière modification par Thomas Williamson (16/08/2013 15:37:38)
Hors ligne
Bonjour,
le format de sortie renvoyé serait plutôt à positionner au niveau du client voire du driver que de la base. Vous pouvez toutefois forcer l'affichage avec un cast (SELECT champ::text par exemple) ou avec un case (SELECT CASE champ WHEN TRUE THEN 'TRUE' ELSE 'FALSE' END), mais dans ce cas vous n'avez plus un booleén mais une chaîne de caractère.
Julien.
https://rjuju.github.io/
En ligne
Bonjour,
vous pouvez utiliser un CASE :
SELECT a,
CASE WHEN a IS TRUE THEN 'TRUE'
WHEN a IS FALSE THEN 'FALSE'
ELSE 'UNKNOWN'
END
FROM toto;
Alex
Hors ligne
Bonjour,
Merci pour vos réponses ! Je vais tester ça dès lundi et je vous tiens au courant. En fait, je me suis aperçu qu'en passant ma requête dans une vue, les libellés TRUE et FALSE apparaissaient correctement (seul l'affichage du résultat de la requête dans la fenêtre SQL semblait concerné par ces « f » et « t »). Etant donné que je passe par une vue, peu importe que je perde le type booléen : l'important est que ce type le reste dans la table concernée, non ? L'objectif au final est d'afficher ces informations sur un site web.
Thomas
Dernière modification par Thomas Williamson (09/08/2013 21:00:22)
Hors ligne
Bonjour,
Merci pour ces conseils. Le problème est que le CASE...END créé une colonne case supplémentaire. Caster la colonne permet d'afficher en toutes lettres « true » ou « false ». Aucune de ces solutions ne me permet de créer une colonne dans ma vue qui comporte les valeurs « oui » ou « non » (à moins que je puisse renommer la colonne case créée).
Quelqu'un voit-il une solution à cette situation ?
Merci beaucoup d'avance !
Thomas
Dernière modification par Thomas Williamson (16/08/2013 15:18:03)
Hors ligne
Vous pouvez utiliser un alias sur CASE comme pour n'importe colonne : CASE champ_bool CASE TRUE THEN 'vrai' ELSE 'faux' END as mon_alias
Julien.
https://rjuju.github.io/
En ligne
Bonjour, super ça marche très bien avec un petit correctif :
SELECT CASE colonne_1 WHEN TRUE THEN 'oui' WHEN FALSE THEN 'non' ELSE '' END AS colonne_2 FROM schema.table;
Bonne soirée !
Thomas
Dernière modification par Thomas Williamson (16/08/2013 17:11:09)
Hors ligne
Pages : 1