IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

Comment caler les nombres à gauche dans une colonne ?


Sujet :

Oracle

  1. #1
    Membre éclairé
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 421
    Par défaut Comment caler les nombres à gauche dans une colonne ?
    Suite de mes soucis de formatage...

    Ma colonne c est un NUMBER(18,6) qui se retrouve collé à droite dans mon fichier de spool. Or je voudrais le coller à gauche de la colonne.
    J'ai essayé COLUMN tab.c JUSTIFY LEFT sans succès.

    En pis-aller j'ai tenté une conversion TO_CHAR(tab.c) : l'alignement se fait bien à gauche , par contre la colonne s'est agrandie à 40 caractère de largeur (alors qu'avant elle prenait bien juste la taille max des données) !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SET LINESIZE 200
    SET PAGESIZE 0
    SET FEEDBACK OFF
    SET TRIMSPOOL ON
    SET COLSEP '|'
     
    COLUMN tab.c JUSTIFY LEFT <-- ???
     
    SPOOL xxx.dat
     
    SELECT a, b, c FROM  tab;
     
    SPOOL OFF;
    QUIT

  2. #2
    Membre expérimenté Avatar de Scual
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    149
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 149
    Par défaut
    Bonjour,

    as-tu essayé de forcer la largeur des colonnes à la main ? (set long)

    Bon courage.

  3. #3
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Tu peux essayer TO_CHAR avec un format
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT TO_CHAR(tab.c,'999G9999G9999G9999D99') FROM tab

  4. #4
    Membre éclairé
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 421
    Par défaut
    Le problème c'est que je ne connais pas a priori la taille max des nombres de cette colonne. (à moins que je puisse indiquer MAX(tab.c) comme valeur dans une de vos 2 solutions ? )

    PS : et le TO_CHAR c'est quand même du contournement de problème, ça m'étonne qu'il n'y ait pas une bête option pour préciser l'alignement

  5. #5
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Citation Envoyé par Peanut
    Le problème c'est que je ne connais pas a priori la taille max des nombres de cette colonne. (à moins que je puisse indiquer MAX(tab.c) comme valeur dans une de vos 2 solutions ? )

    PS : et le TO_CHAR c'est quand même du contournement de problème, ça m'étonne qu'il n'y ait pas une bête option pour préciser l'alignement
    Pour le TO_CHAR, tu connais qd même la taille maxi .de tes données (18 chiffres dont 6 décimales) donc tu peux adapter le format en conséquence !
    Pour SQL+, je n'utilise jamais cet outil, désolé

  6. #6
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set NUMFORMAT 999G999G999D999999

  7. #7
    Membre éclairé
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 421
    Par défaut
    Citation Envoyé par Garuda
    Pour le TO_CHAR, tu connais qd même la taille maxi .de tes données (18 chiffres dont 6 décimales) donc tu peux adapter le format en conséquence !
    Pour SQL+, je n'utilise jamais cet outil, désolé
    Oui, tu as raison, je peux indiquer 18.6 comme MAX. J'aurais quand même préféré avoir le vrai MAX dynamique (qd'autant que si par la suite on change la taille du NUMBER, il ne faudra pas oublier de changer ce MAX dans MON programme...) mais je pense que ça va fonctionner quand même. (le fichier est retraité par la suite par d'autres programmes...)

  8. #8
    Membre éclairé
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 421
    Par défaut
    Citation Envoyé par Garuda
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set NUMFORMAT 999G999G999D999999
    OK, ça fixe bien la taille de la colonne, mais ça applique le même formatage à tous les nombres (pas top), et le TO_CHAR appliqué dessus fait perdre ce formatage et donc la taille de la colonne avec.

    Tant pis, je vais me débrouiller en faisant un traitement a posteriori.
    Merci.

  9. #9
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Citation Envoyé par metalink
    [FONT=courier] set arraysize 1
    set serveroutput on
    set pagesize 50
    column empno format 99999
    column ename format a20 [/FONT]

  10. #10
    Membre éclairé
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 421
    Par défaut
    Citation Envoyé par Garuda
    ...
    Oui ! Ca fonctionne en faisant ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    COLUMN TO_CHAR(c) format A19
     
    SELECT TO_CHAR(c) from tab;
    Seul inconvénient, comme je l'ai dit, c'est que ça oblige à changer le code si la taille n'est plus 18.6 un jour ...
    Mais bon.

  11. #11
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Moi, je ferais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    COLUMN c format 999G999G999G999D9999999
    select c from tab
    pour eviter le to_CHAR

  12. #12
    Membre éclairé
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 421
    Par défaut
    Je fais un TO_CHAR pour obtenir un alignement à gauche que je n'arrive pas à avoir autrement...

  13. #13
    Membre expérimenté Avatar de Scual
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    149
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 149
    Par défaut
    Rebonjour,

    Voici les tests que j'ai effectué sur mon serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    create table testdev (a NUMBER(5));
    create sequence testdev_seq;
     
    BEGIN
    FOR i IN 1..10 LOOP
    INSERT INTO testdev VALUES (testdev_seq.nextval);
    END LOOP;
    END;
    /
    Bon ça c'est pour le petite histoire

    Puis voici les résultats de select :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT a FROM testdev;
     
             A
    ----------
             1
             2
             3
             4
             5
             6
    ...
    Vérif avec le justify :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    COLUMN toto JUSTIFY left
    SELECT a totoFROM testdev;
     
    TOTO
    ----------
             1
             2
             3
             4
             5
             6
    ...
    Résultat des courses :
    Le justify permet de configurer l'alignement du HEADING et pas des données.

    Tu es obligé de passer par to_char.

    ++

  14. #14
    Membre éclairé
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 421
    Par défaut
    Citation Envoyé par Scual
    Rebonjour,

    Résultat des courses :
    Le justify permet de configurer l'alignement du HEADING et pas des données.

    Tu es obligé de passer par to_char.

    ++
    Ah ben d'accord, je pouvais toujours m'escrimer avec mon JUSTIFY !
    Merci pour le retour.

  15. #15
    Membre éclairé
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 421
    Par défaut
    Question subsidiaire : est-ce qu'il y a un site qui reprend toutes les commandes SQL*PLUS (fonctions, syntaxe, ...) ? Parce que je galère un peu avec Google pour trouver des infos...

  16. #16
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    ici

  17. #17
    Membre éclairé
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 421
    Par défaut
    Parfait : je bookmarke !

  18. #18
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Et pourrais tu faire aussi
    ?

  19. #19
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760

  20. #20
    Membre expérimenté Avatar de Scual
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    149
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 149
    Par défaut
    Petit dernier pour la route :
    http://www.ss64.com/orasyntax/sqlplus.html

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/06/2015, 09h52
  2. Réponses: 9
    Dernier message: 13/04/2006, 11h40
  3. comment compter les entrées identiques dans une requete?
    Par Chico_Latino dans le forum Access
    Réponses: 2
    Dernier message: 11/04/2006, 18h16
  4. Réponses: 1
    Dernier message: 11/01/2006, 11h58
  5. Comment gérer les valeur Nulles dans une requête ?
    Par sondo dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/03/2005, 11h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo