OVH Cloud OVH Cloud

Oracle SELECT comment changer les valeurs retournees

3 réponses
Avatar
Nanard
Bonjour

Ca se passe sour Oracle.

Si je me souviens bien dans une requette de type :
SELECT toto from titi;

il est possible de faire une sorte de 'switch' et par exemple pour
chaque enregistrement ou toto='AAA' le SELECT retourne 'II'

Par contre je me souviens plus de comment on fait. Qqun a une idee ?

Je voudrais par exemple changer a la volee les colonnes dont la valeur
est NULL/pas definie par une chaine de caractere 'UNDEFINED'.

Merci

Nanard

3 réponses

Avatar
Bruno Baguette
Nanard a écrit :

Je voudrais par exemple changer a la volee les colonnes dont la valeur
est NULL/pas definie par une chaine de caractere 'UNDEFINED'.



Regardez du côté de la fonction COALESCE. Cette fonction retourne la
première valeur non-nulle.

Pour reprendre votre exemple :

SELECT COALESCE(toto,'UNDEFINED') AS toto_display from titi;

En espérant que ca aide,

--
Bruno BAGUETTE -
Avatar
Christophe Cuq
"Nanard" writes:

merci. Mais je voudrais 'decoder' que certaines valeurs retournee,
pas toutes. Je veux juste changer les colonnes vide par des
'UNDEFINED', mais si il y a une valeur, je souhaite la conserver.



Si ta version d'Oracle est > 8, utilise l'instruction CASE qui est
exactement faite pour ça, entre autres :)

Voir par exemple :

http://www.databasejournal.com/features/oracle/article.php/3344871

Et tu peux aussi regarder la doc Oracle pour la syntaxe exacte, là je
suis loin de mes bouquins.

Cette instruction qui devrait à terme remplacer le DECODE (qui est
annoncé comme deprecated...)

C'est un peux complique pour un petit SELECT, non ?



Non.

--
CHC
Avatar
Fred Brouard - SQLpro
Bon, alors CASE en VF pour Oracle 8 et + :
http://sqlpro.developpez.com/cours/sqlaz/select/#L7

COALESCE :
http://sqlpro.developpez.com/cours/sqlaz/select/#L5.2

A +

Nanard a écrit:
Bonjour

Ca se passe sour Oracle.

Si je me souviens bien dans une requette de type :
SELECT toto from titi;

il est possible de faire une sorte de 'switch' et par exemple pour
chaque enregistrement ou toto='AAA' le SELECT retourne 'II'

Par contre je me souviens plus de comment on fait. Qqun a une idee ?

Je voudrais par exemple changer a la volee les colonnes dont la valeur
est NULL/pas definie par une chaine de caractere 'UNDEFINED'.

Merci

Nanard




--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************