Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/07/2008, 16h47   #1
Membre confirmé
 
Inscription : mars 2007
Messages : 750
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 750
Points : 277
Points : 277
Par défaut Transformer 4.44 en 4.4400

Bonjour,

je souhaiterais savoir comment mettre tous champs de ma table avec des décimales sur 4 caractères même si elles n'en possèdent que 2. par exemple je veux pouvoir récupérer 4.4400 pour un champ ayant la valeur 4.44.

J'ai essayé le ROUND(4.44,4) mais ça ne marche pas.
farenheiit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2008, 17h19   #2
Rédacteur/Modérateur
 
Avatar de Vincent Rogier
 
vincent rogier
Inscription : juillet 2007
Messages : 2 355
Détails du profil
Informations personnelles :
Nom : vincent rogier
Âge : 34

Informations forums :
Inscription : juillet 2007
Messages : 2 355
Points : 3 108
Points : 3 108
si c'est pour faire un select, alors :

Code :
to_char(value, '99999999999999999999999999.9999')
A modifier pour que cela concorde avec la définition du champs.
__________________
Vincent Rogier.

Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

OCILIB (C Driver for Oracle)

Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
Vincent Rogier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2008, 17h19   #3
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 320
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 320
Points : 5 839
Points : 5 839
Ca sert à quoi de modifier la table ?
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
SQL> col num format 9.9999
SQL> SELECT 4.44 FROM dual;
 
      4.44
----------
      4.44
 
SQL> SELECT 4.44 num FROM dual;
 
    NUM
-------
 4.4400
 
SQL>
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2008, 17h22   #4
Rédacteur/Modérateur
 
Avatar de Vincent Rogier
 
vincent rogier
Inscription : juillet 2007
Messages : 2 355
Détails du profil
Informations personnelles :
Nom : vincent rogier
Âge : 34

Informations forums :
Inscription : juillet 2007
Messages : 2 355
Points : 3 108
Points : 3 108
Citation:
Envoyé par mnitu Voir le message
Ca sert à quoi de modifier la table ?
quand je dis modifier, c'est modifier le pattern du to_char()...
__________________
Vincent Rogier.

Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

OCILIB (C Driver for Oracle)

Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
Vincent Rogier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2008, 17h37   #5
Membre confirmé
 
Inscription : mars 2007
Messages : 750
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 750
Points : 277
Points : 277
le problème avec cette solution c'est qu'il me met des décimales pour les valeurs entières.
ex: 10 devient 10.0000
farenheiit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 08h53   #6
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 320
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 320
Points : 5 839
Points : 5 839
Citation:
Envoyé par vicenzo Voir le message
quand je dis modifier, c'est modifier le pattern du to_char()...
Salut Vicenzo,

Ma remarque n'a rien à voir avec ta réponse, elle a été fait avant.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 09h10   #7
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 320
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 320
Points : 5 839
Points : 5 839
Citation:
Envoyé par farenheiit Voir le message
le problème avec cette solution c'est qu'il me met des décimales pour les valeurs entières.
ex: 10 devient 10.0000
Ta table, plus précisement ta colonne, contient des réelles (Number(???,4)). En fait c'est quoi ton vrai problème ?
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 10h11   #8
Membre confirmé
 
Inscription : mars 2007
Messages : 750
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 750
Points : 277
Points : 277
en fait j'ai une colonne dans ma table qui est un NUMBER.
j'ai certaines valeures décimales pour ce champ. Certaines valeurs ont 2 chiffres après la virgule et d'autres en ont 4. Le maximum de chiffres après la virgule est de 4. Je voudrais faire un select dans ma table en mettant toutes les valeurs décimales à 4 chiffres après la virgules même celles qui n'en ont que 2. Par contre je veux que les valeurs entières restent entières.
ex: j'ai les 3 valeurs suivantes:
- 10
- 25.26
- 30.4569

je veux que la valeur 10 reste à 10 mais que 25.26 devienne 25.2600.

le problème avec le to_char(value, '99999999999999999999999999.9999') c'est que ma valeur 10 devient 10.0000
farenheiit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 10h41   #9
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
doit on rappeler que le SQL ne sert qu'à récupérer les données, le formatage étant à la charge de l'application tiers. Si nous ne connaissons pas l'appli que tu utilises on aura donc du mal à t'aider. C'est SQL*Plus ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 10h52   #10
Rédacteur/Modérateur
 
Avatar de Vincent Rogier
 
vincent rogier
Inscription : juillet 2007
Messages : 2 355
Détails du profil
Informations personnelles :
Nom : vincent rogier
Âge : 34

Informations forums :
Inscription : juillet 2007
Messages : 2 355
Points : 3 108
Points : 3 108
tu peux faire comme ca (c'est pas très beau, mais...)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
 
SQL> CREATE TABLE test (value number);
 
TABLE crÚÚe.
 
SQL>
SQL> INSERT INTO test(value) VALUES(10);
 
1 ligne crÚÚe.
 
SQL> INSERT INTO test(value) VALUES(5.45);
 
1 ligne crÚÚe.
 
SQL> INSERT INTO test(value) VALUES(6.5678);
 
1 ligne crÚÚe.
 
SQL>
SQL>
SQL> SELECT
  2      case
  3          when
  4              value = trunc(value)  then  to_char(value, '99999999999999999999999999')
  5              else  to_char(value, '99999999999999999999999999.9999')
  6          end
  7  FROM
  8      test;
 
CASEWHENVALUE=TRUNC(VALUE)THENTO
--------------------------------
                         10
                          5.4500
                          6.5678
 
SQL>
__________________
Vincent Rogier.

Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

OCILIB (C Driver for Oracle)

Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
Vincent Rogier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 11h04   #11
Membre confirmé
 
Inscription : mars 2007
Messages : 750
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 750
Points : 277
Points : 277
Citation:
Envoyé par orafrance Voir le message
doit on rappeler que le SQL ne sert qu'à récupérer les données, le formatage étant à la charge de l'application tiers. Si nous ne connaissons pas l'appli que tu utilises on aura donc du mal à t'aider. C'est SQL*Plus ?
j'utilise TOAD. Mon but après est de faire un export des résultats grâce à TOAD sous forme de fichier CSV
farenheiit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 11h08   #12
Rédacteur/Modérateur
 
Avatar de Vincent Rogier
 
vincent rogier
Inscription : juillet 2007
Messages : 2 355
Détails du profil
Informations personnelles :
Nom : vincent rogier
Âge : 34

Informations forums :
Inscription : juillet 2007
Messages : 2 355
Points : 3 108
Points : 3 108
la requête que je t'ai filé n'est pas belle et faite à l'arrache mais ca a l'air de correspondre à ta problèmatique
__________________
Vincent Rogier.

Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

OCILIB (C Driver for Oracle)

Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
Vincent Rogier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 11h11   #13
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Citation:
Envoyé par farenheiit Voir le message
j'utilise TOAD. Mon but après est de faire un export des résultats grâce à TOAD sous forme de fichier CSV
Dans ce cas, fait un export brut, ouvre le CSV dans Excel et utilise le formatage de colonne d'Excel
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 11h13   #14
Membre confirmé
 
Inscription : mars 2007
Messages : 750
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 750
Points : 277
Points : 277
Citation:
Envoyé par orafrance Voir le message
Dans ce cas, fait un export brut, ouvre le CSV dans Excel et utilise le formatage de colonne d'Excel
farenheiit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 11h13   #15
Membre confirmé
 
Inscription : mars 2007
Messages : 750
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 750
Points : 277
Points : 277


je m'attendais à mieux de la part d'OraFrance
farenheiit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 11h17   #16
Rédacteur/Modérateur
 
Avatar de Vincent Rogier
 
vincent rogier
Inscription : juillet 2007
Messages : 2 355
Détails du profil
Informations personnelles :
Nom : vincent rogier
Âge : 34

Informations forums :
Inscription : juillet 2007
Messages : 2 355
Points : 3 108
Points : 3 108
si la requête fournie te convient, penses à mettre le flag résolu...
__________________
Vincent Rogier.

Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

OCILIB (C Driver for Oracle)

Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
Vincent Rogier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 11h20   #17
Membre confirmé
 
Inscription : mars 2007
Messages : 750
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 750
Points : 277
Points : 277
mon spérateur de champ est "|". Or Excel ne reconnait pas ce séparateur par défaut et m'ouvre tous mes champs dans la même celulle. Pour Excel le séparateur par défaut est la virgule.Sais-tu comment indiquer à Excel de prendre le pipe comme séparateur?
farenheiit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 11h24   #18
Rédacteur/Modérateur
 
Avatar de Vincent Rogier
 
vincent rogier
Inscription : juillet 2007
Messages : 2 355
Détails du profil
Informations personnelles :
Nom : vincent rogier
Âge : 34

Informations forums :
Inscription : juillet 2007
Messages : 2 355
Points : 3 108
Points : 3 108
là, c'est plus de l'oracle

faut faire fichier, ouvrir, et la il te demande le séparateur perso que tu peux indiquer...
__________________
Vincent Rogier.

Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

OCILIB (C Driver for Oracle)

Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
Vincent Rogier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 11h25   #19
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
génère un .txt plutôt que .csv et là Excel te demande le séparateur
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 11h26   #20
Membre confirmé
 
Inscription : mars 2007
Messages : 750
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 750
Points : 277
Points : 277
Citation:
Envoyé par vicenzo Voir le message
tu peux faire comme ca (c'est pas très beau, mais...)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
 
SQL> CREATE TABLE test (value number);
 
TABLE crÚÚe.
 
SQL>
SQL> INSERT INTO test(value) VALUES(10);
 
1 ligne crÚÚe.
 
SQL> INSERT INTO test(value) VALUES(5.45);
 
1 ligne crÚÚe.
 
SQL> INSERT INTO test(value) VALUES(6.5678);
 
1 ligne crÚÚe.
 
SQL>
SQL>
SQL> SELECT
  2      case
  3          when
  4              value = trunc(value)  then  to_char(value, '99999999999999999999999999')
  5              else  to_char(value, '99999999999999999999999999.9999')
  6          end
  7  FROM
  8      test;
 
CASEWHENVALUE=TRUNC(VALUE)THENTO
--------------------------------
                         10
                          5.4500
                          6.5678
 
SQL>
Effectivement ta solution marche très bien.
Toutefois j'ai une autre question. Pour mes valeurs décimales commençant par 0 (ex: "0.75") TOAD ne m'affiche pas le 0. Il m'affiche ".75". Comment faire pour avoir le 0???
farenheiit est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h35.


 
 
 
 
Partenaires

Hébergement Web