PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 09/08/2013 14:33:59

[RESOLU] Type booléen et libellés affichés

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

#2 09/08/2013 19:56:22

rjuju
Administrateur

Re : [RESOLU] Type booléen et libellés affichés

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.

Hors ligne

#3 09/08/2013 20:05:14

MitsuTomoe
Membre

Re : [RESOLU] Type booléen et libellés affichés

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;

La doc est ici


Alex

Hors ligne

#4 09/08/2013 21:00:12

Re : [RESOLU] Type booléen et libellés affichés

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

#5 16/08/2013 15:17:52

Re : [RESOLU] Type booléen et libellés affichés

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

#6 16/08/2013 15:27:37

rjuju
Administrateur

Re : [RESOLU] Type booléen et libellés affichés

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

Hors ligne

#7 16/08/2013 15:37:12

Re : [RESOLU] Type booléen et libellés affichés

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

Pied de page des forums