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

SQL Oracle Discussion :

formater les nombres dans une session


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 47
    Points : 37
    Points
    37
    Par défaut formater les nombres dans une session
    Bonjour a tous,

    le format des nombres dans notre base oracle est de la forme nnn,nnn,nnn.nnn avec virgule comme séparateur de milliers et point comme separateur pour decimales.
    Je dois generer des resultats de requetes dans des fichiers textes puis formater sous excel, il se trouve que le format de nombres quil recupere est difficilement manipulable sous access,je souhaiterais donc pouvoir extraire mes nombres sans séparateur de milliers et avec virgules comme séparateur pour les décimales
    Quelq'un pourrait il maider?
    Merci par avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2007
    Messages : 53
    Points : 45
    Points
    45
    Par défaut
    je crois qu'il faut utiliser la variable d'environnement NLS_NUMERIC_CHARACTERS
    c'est une piste a suivre
    bon courage

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 47
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par damiano84
    je crois qu'il faut utiliser la variable d'environnement NLS_NUMERIC_CHARACTERS
    c'est une piste a suivre
    bon courage
    Merci pour la piste
    Mais stp comment utiliser cette variable si on veut formater les nombre sans séparateur de milliers et virgule comme séparateur de la partie entiere de celle fractionnaire.

    merci

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2007
    Messages : 53
    Points : 45
    Points
    45
    Par défaut
    si je me rappelle bien il faut faire:
    set NLS_NUMERIC_CHARACTERS=,
    elle prend deux arguments le premier indique le séparateur des décimales (dans ton cas ,) et le deuxième celui des milliers (dans ton cas nada )
    a vérifier biensur
    bon courage

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 47
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par damiano84
    si je me rappelle bien il faut faire:
    set NLS_NUMERIC_CHARACTERS=,
    elle prend deux arguments le premier indique le séparateur des décimales (dans ton cas ,) et le deuxième celui des milliers (dans ton cas nada )
    a vérifier biensur
    bon courage
    Bonjour

    Merci pour ta reponse
    Jai modifié le NLS_NUMERIC_CHARACTERS mais ça ne marche toujours pas. Mais le NLS_NUMERIC_CHARACTERS il agit au niveau de l'insertion de donnees dans la base non? Moi en fait je suis entrain d'extraire des donnes de la base par un select.
    Jexplique, les donnees sont deja dans la base avec le NLS_SESSION_PARAMETERS suivant
    PARAMETER VALUE
    ------------------------------ ----------------------------------------
    NLS_LANGUAGE AMERICAN
    NLS_TERRITORY AMERICA
    NLS_CURRENCY $
    NLS_ISO_CURRENCY AMERICA
    NLS_NUMERIC_CHARACTERS .,
    NLS_CALENDAR GREGORIAN
    NLS_DATE_FORMAT DD-MON-RR
    NLS_DATE_LANGUAGE AMERICAN
    NLS_SORT BINARY
    NLS_TIME_FORMAT HH.MI.SSXFF AM
    NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
    NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
    NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
    NLS_DUAL_CURRENCY $
    NLS_COMP BINARY
    NLS_LENGTH_SEMANTICS BYTE
    NLS_NCHAR_CONV_EXCP FALSE

    ce qui fait que les nombres sont de la forme nnn,nnn,nnn,nnn.dd où , est le separateur de millier et . le separateur entre partie entiere et partie fractionnaire, ce que je voudrais c' que les nombre à l'exécution de ma requete sur une table se presente comme dans le systeme francais nnnnnnnnn,dd pour une session donnée.

    Merci

  6. #6
    Membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2004
    Messages : 46
    Points : 43
    Points
    43
    Par défaut
    Le 1er caractere indique le séparateur décimal
    Le 2nd indique le séparateur de milliers

    Pour votre cas, il faut avoir

    NLS_NUMERIC_CHARACTERS = ", "


    Ex sous SQLPLUS (je ne suis pas arrivée a le faire sous Toad, par exemple)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SQL> select 15478774/100 from dual;
    
    15478774/100
    ------------
       154787.74
    
    SQL> alter session set  NLS_NUMERIC_CHARACTERS=", ";
    
    Session altered.
    
    SQL> select 15478774/100 from dual;
    
    15478774/100
    ------------
       154787,74
    Est-ce que cela correspond a ce que vous souhaitez faire ?

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 47
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par isa06
    Le 1er caractere indique le séparateur décimal
    Le 2nd indique le séparateur de milliers

    Pour votre cas, il faut avoir

    NLS_NUMERIC_CHARACTERS = ", "


    Ex sous SQLPLUS (je ne suis pas arrivée a le faire sous Toad, par exemple)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SQL> select 15478774/100 from dual;
    
    15478774/100
    ------------
       154787.74
    
    SQL> alter session set  NLS_NUMERIC_CHARACTERS=", ";
    
    Session altered.
    
    SQL> select 15478774/100 from dual;
    
    15478774/100
    ------------
       154787,74
    Est-ce que cela correspond a ce que vous souhaitez faire ?
    Bonjour et merci

    Jai fait le alter et c' coorect
    le select 15478774/100 from dual marche correctement mais quand je fais un select sur un champs montant de ma table par exemple
    select champ from tabledelabase
    il ne marche pas
    le champ est retourné tel quel avec virgule comme separateur de millier et point comme separateur avec la partie decimale.
    merci

  8. #8
    Membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2004
    Messages : 46
    Points : 43
    Points
    43
    Par défaut
    Ben chez moi, ca marche quand je selectionne une table
    Mon environnement : sous UNIX, la variable d'environnement correspondante est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ echo $NLS_NUMERIC_CHARACTERS 
    .,
    et j 'utilise sqlplus


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    SQL> select TTticket from t1_detail where ticketnumber=473258204944;
     
      TTTICKET
    ----------
       2823.18
       2823.18
       2823.18
       2823.18
     
    SQL>  alter session set  NLS_NUMERIC_CHARACTERS=", ";
     
    Session altered.
     
    SQL>  select TTticket from t1_detail where ticketnumber=473258204944;
     
      TTTICKET
    ----------
       2823,18
       2823,18
       2823,18
       2823,18

  9. #9
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 47
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par isa06
    Ben chez moi, ca marche quand je selectionne une table
    Mon environnement : sous UNIX, la variable d'environnement correspondante est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ echo $NLS_NUMERIC_CHARACTERS 
    .,
    et j 'utilise sqlplus


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    SQL> select TTticket from t1_detail where ticketnumber=473258204944;
     
      TTTICKET
    ----------
       2823.18
       2823.18
       2823.18
       2823.18
     
    SQL>  alter session set  NLS_NUMERIC_CHARACTERS=", ";
     
    Session altered.
     
    SQL>  select TTticket from t1_detail where ticketnumber=473258204944;
     
      TTTICKET
    ----------
       2823,18
       2823,18
       2823,18
       2823,18
    Merci
    Sais tu si cette variable peut etre géré dan des variables d'anvironnement quelque part sur le serveur? nous somme en solaris avec oracle installé
    ce que je remarque ma modif marche bien quand je fais par exemple
    select 1254789632/100
    mais quand il sagit dune donnee dune table de la base, il ne marche pas, je me dis ke c'est peut etre prédéfini quelquepart!
    merci par avance

  10. #10
    Membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2004
    Messages : 46
    Points : 43
    Points
    43
    Par défaut
    Mon exemple montre que
    - on peut voir le contenu de la variable d'environnement UNIX, sur le serveur, en faisant
    > echo $NLS_NUMERIC_CHARACTERS

    - Avec sqlplus sur le serveur, si on fait un alter session on override le contenu de ce parametre pour la session en cours, et on obtient donc le formattage désiré (quelle que soit la requete !)

    Maintenant, si la requete s'effectue depuis un outil client serveur, je ne sais pas comment faire ! Par ex, avec TOAD (outil PC) , le meme alter session ne donne pas le meme formattage sur la requete que lorsque je suis sur sqlplus sur le serveur.
    Je crois que ces parametres, sur un client PC, sont stockés en base de registres mais la je ne maitrise plus trop

    Isa

    PS :ce n'est pas la peine de citer toute ma réponse a chaque fois

  11. #11
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 47
    Points : 37
    Points
    37
    Par défaut
    Merci

    ce ke je remarque jai bien modifie le nls_session_parameters comme suitPARAMETER VALUE
    ------------------------------ ----------------------------------------
    NLS_LANGUAGE FRENCH
    NLS_TERRITORY FRANCE
    NLS_CURRENCY ¿
    NLS_ISO_CURRENCY FRANCE
    NLS_NUMERIC_CHARACTERS ,.
    NLS_CALENDAR GREGORIAN
    NLS_DATE_FORMAT DD/MM/RR
    NLS_DATE_LANGUAGE FRENCH
    NLS_SORT FRENCH
    NLS_TIME_FORMAT HH24:MI:SSXFF
    NLS_TIMESTAMP_FORMAT DD/MM/RR HH24:MI:SSXFF
    NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZR
    NLS_TIMESTAMP_TZ_FORMAT DD/MM/RR HH24:MI:SSXFF TZR
    NLS_DUAL_CURRENCY ¿
    NLS_COMP BINARY
    NLS_LENGTH_SEMANTICS BYTE
    NLS_NCHAR_CONV_EXCP FALS

    Mais le ns_lang donne
    SQL> host echo $NLS_LANG
    AMERICAN_AMERICA.WE8ISO8859P1

    je me demande si c' c pas à cause de ce parametre que les donnees extraites de ma base ne changent pas de format!
    on travaille sur serveur sun solaris avec notre base oracle et j'y accede par reflexion.

    merci

Discussions similaires

  1. [XL-2007] Quelle sont les nombres dans une plage leures sommes equale un nombre connue
    Par iliesss dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/09/2012, 21h16
  2. Comment extraire les nombres dans une table
    Par ninatity dans le forum SQL
    Réponses: 1
    Dernier message: 30/08/2011, 15h12
  3. [XL-2007] Format de nombre dans une formule
    Par AReS-97 dans le forum Excel
    Réponses: 1
    Dernier message: 07/12/2010, 15h25
  4. [PPT-2010] mettre à jour les nombres dans une phrase
    Par pepsister dans le forum Powerpoint
    Réponses: 1
    Dernier message: 14/06/2010, 11h32
  5. Sauvegarder les données dans une session
    Par madjidri dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 08/04/2009, 18h45

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