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 :

Zéro à gauche


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 21
    Par défaut Zéro à gauche
    Bonjour,

    Je cherche à rendre l'affichage du zéro à gauche obligatoire pour un nombre entre 0 et 1.

    là par exemple avec un select retournant 0,5 => j'ai : ,5 (moi je veux 0,5)

    une idée sur comment le faire ? sachant que c'est une colonne fictive (résultat d'une somme d'autres colonnes).

    Merci d'avance

    edit : j'ai testé un 'to_char' mais ça me retourne un "#####" au lieu du résultat attendu

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Oui to_char est la bonne solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    select nm, to_char(nm, 'FM0D00') t1, to_char(nm, 'FM0D000') t2
    from 
    (
    select 0 nm from dual union
    select 0.1 from dual union
    select 0.23 from dual union
    select 0.489 from dual union
    select 0.499 from dual union
    select 0.5 from dual union
    select 0.501 from dual union
    select 0.75 from dual union
    select 1 from dual 
    )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    NM	T1	T2
    0	0,00	0,000
    0.1	0,10	0,100
    0.23	0,23	0,230
    0.489	0,49	0,489
    0.499	0,50	0,499
    0.5	0,50	0,500
    0.501	0,50	0,501
    0.75	0,75	0,750
    1	1,00	1,000

  3. #3
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 21
    Par défaut
    Merci pour ta réponse. Très rapide.

    Mais, j'avais deja testé, deux problème se posent.

    • Pour les nombre > 1 j'ai des "####" qui apparaissent dans le champ. (ce qui est normal,
    • c'est moins bloquant, mais j'aimerais en pas avoir de "pending zeros" du côté droit.


    Une idée ? merci encore pour ta réponse

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Il faut alors mettre des 9 à la place des 0 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    select nm, to_char(nm, 'FM0D99') t1, to_char(nm, 'FM0D999') t2
    from 
    (
    select 0 nm from dual union
    select 0.1 from dual union
    select 0.23 from dual union
    select 0.489 from dual union
    select 0.499 from dual union
    select 0.5 from dual union
    select 0.501 from dual union
    select 0.75 from dual union
    select 1 from dual 
    )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    NM	T1	T2
    0	0,	0,
    0.1	0,1	0,1
    0.23	0,23	0,23
    0.489	0,49	0,489
    0.499	0,5	0,499
    0.5	0,5	0,5
    0.501	0,5	0,501
    0.75	0,75	0,75
    1	1,	1,

  5. #5
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 21
    Par défaut
    Merci pour votre réponse. ça marche
    ..presque...

    J'ai bien compris le fonctionnement. Cela dit, je me demande toujours si c'est possible d'avoir 5 au lieu de 5, ? car c'est bloquant pour le fichier plat en sortie qui va alimenter un autre système par la suite :/

    Merci encore à vous deux


    edit : grillé par Waldar, ça pause effectivement un problème avec les entiers

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Peut-être avec (le nombre de 9 est à configurer en fonction de votre précision maximale) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    to_char(nm, 'FM999999999999990D09999999')
    Ca écrira 5,0 pour 5 mais ce n'est pas fondamentalement faux !

  7. #7
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Essayez avec TO_CHAR(nombre, 'FM0D999999999')

    Dans la chaîne de formatage, 0 indique une chiffre obligatoire et le 9 un chiffre facultatif.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TO_CHAR(0.123, 'FM0D999999') FROM DUAL;
    n'affichera donc que les 3 décimales existantes.

    Edit : Désolé, à cause de l'effet de cache, je n'avais pas vu la réponse précédente !

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Celà dit notre réponse pose un problème sur les entiers !

Discussions similaires

  1. Fomatter un nombre avec des zéro à gauche
    Par birt1976 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/10/2008, 17h02
  2. Cadrer une variable avec des zéros à gauche
    Par saysay dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 07/08/2008, 11h05
  3. Réponses: 7
    Dernier message: 17/04/2007, 22h31
  4. [XSLT] Suppression des zéros à gauche d'un nombre
    Par stepd dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/03/2007, 10h32
  5. Supprimer les zéros à gauche du DecimalSeparator
    Par Droïde Système7 dans le forum Langage
    Réponses: 19
    Dernier message: 25/08/2005, 17h35

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