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 :

Tri décimal positif et négatif ?


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 139
    Points : 59
    Points
    59
    Par défaut Tri décimal positif et négatif ?
    Bonjour tous le monde,

    Un petit soucis que je n'arrive pas à résoudre.
    mon cham est en varchar2(200)
    et mon tri doit se faire dans le order by .
    voici mes 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
     
    -20.79000
    6.25000
    2.50000
    0.00000
    6.30000
    12.60000
    40.83000
    166.67000
    83.3300
    9.45000
    -6.25000
    2.99000
    11.96000
    quand je fais le tri, il ne le fait pas bien comme il faut, pourtant je rajoute TO_NUMBER pour mon champ.
    Merci pour toute info.

    en sortie je veux ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    -20.79000
    -6.25000
    0.00000
    2.50000
    2.99000
    6.25000
    6.30000
    9.45000
    11.96000
    12.60000
    40.83000
    83.3300
    166.67000
    Cordialement

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Laissez cinq / dix valeurs dans votre liste, et dites ce que vous attendez en sortie et ce que vous obtenez.

  3. #3
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    La possibilité dans ce cas est; tu as fais le TO_NUMBER dans la clause SELECT pour le champ en question mais dans celle de ORDER BY tu as oublié de le faire .
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  4. #4
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 139
    Points : 59
    Points
    59
    Par défaut
    Merci Isalamov et Merci Waldar,

    Je n'arrive toujours pas.
    Waldar j'ai remodifié l'ennoncé.
    Isalamov : voici ma requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select FTFRA_COLT_TARIF_PREST_5D from matable
    ORDER BY TO_NUMBER(trim(BOTH '.' FROM substr(FTFRA_COLT_TARIF_PREST_5D, 1, 2)))asc;
    Merci

  5. #5
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Ca marche pour moi
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 
    Connected as mni
     
    SQL> 
    SQL> With Data As (
      2    Select -20.79000 as num from dual union all
      3    Select 6.25000 as num from dual union all
      4    Select 2.50000 as num from dual union all
      5    Select 0.00000 as num from dual union all
      6    Select 6.30000 as num from dual union all
      7    Select 12.60000 as num from dual union all
      8    Select 40.83000 as num from dual union all
      9    Select 166.67000  as num from dual union all
     10    Select 83.3300  as num from dual union all
     11    Select 9.45000  as num from dual union all
     12    Select -6.25000 as num from dual union all
     13    Select 2.99000 as num from dual union all
     14    Select 11.96000 as num from dual
     15  )
     16  Select to_char(num,'999D99999')
     17    From data
     18   Order By num
     19  /
     
    TO_CHAR(NUM,'999D99999')
    ------------------------
     -20,79000
      -6,25000
        ,00000
       2,50000
       2,99000
       6,25000
       6,30000
       9,45000
      11,96000
      12,60000
      40,83000
      83,33000
     166,67000
     
    13 rows selected
     
    SQL>

  6. #6
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 139
    Points : 59
    Points
    59
    Par défaut
    Un point important que j'ai oublié de dire.
    mon cham est en varchar2(200)
    et impossible de changer le type car veille application.

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Essayez comme ceci :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    with sr (col) as
    (
    select '-20.79000' from dual union all
    select   '6.25000' from dual union all
    select   '2.50000' from dual union all
    select   '0.00000' from dual union all
    select   '6.30000' from dual union all
    select  '12.60000' from dual union all
    select  '40.83000' from dual union all
    select '166.67000' from dual union all
    select  '83.33000' from dual union all
    select   '9.45000' from dual union all
    select  '-6.25000' from dual union all
    select   '2.99000' from dual union all
    select  '11.96000' from dual
    )
      select col
        from sr
    order by to_number(col, '9999999D99999', 'NLS_NUMERIC_CHARACTERS=''. ''');
     
    COL     
    ---------
    -20.79000 
    -6.25000  
    0.00000   
    2.50000   
    2.99000   
    6.25000   
    6.30000   
    9.45000   
    11.96000  
    12.60000  
    40.83000  
    83.33000  
    166.67000

  8. #8
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 139
    Points : 59
    Points
    59
    Par défaut
    Waldar ça ne marche pas, le tri n'est pas bon.
    C'est la première fois que je tombe sur un truc bizarre avec les décimaux négatifs et positifs.

  9. #9
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    tifsa , pourquoi cette gym pour faire un simple tri?
    Tu fais le tri avec telle TO_NUMBER(trim(BOTH '.' FROM substr(FTFRA_COLT_TARIF_PREST_5D, 1, 2)) avec champ modifié qui est retourne des nombres tronqués, c'est tout à normal.
    Il faut etre simple en faissant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    order by FTFRA_COLT_TARIF_PREST_5D
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  10. #10
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par tifsa Voir le message
    Un point important que j'ai oublié de dire.
    mon cham est en varchar2(200)
    et impossible de changer le type car veille application.
    Ou comment se tirer une balle dans le pied.

  11. #11
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 139
    Points : 59
    Points
    59
    Par défaut
    La boite pour laquelle j'interviens avait conçu la base avec des champs en varchar2. j'ai demandé déjà dans le passé si je pouvais modifier le type mais impossible car ça impacte d'autres applications qui pointent sur cette base.
    donc j'ai toujours pas trouvé cette solution.
    merci

  12. #12
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 139
    Points : 59
    Points
    59
    Par défaut
    resolu
    desolé j'ai pas trop bien copié/coller la requete de Weldar.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Turbo Pascal] Tri de nombres positifs et négatifs
    Par khmamed dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 06/03/2011, 17h40
  2. JFormattedTextField décimal positif
    Par elninomed dans le forum AWT/Swing
    Réponses: 0
    Dernier message: 03/06/2010, 17h39
  3. nombre aléatoire positif et négatif
    Par isatis28 dans le forum C
    Réponses: 18
    Dernier message: 22/11/2006, 11h53
  4. tableau de nbrs positifs et négatifs
    Par pipip dans le forum C
    Réponses: 9
    Dernier message: 06/11/2006, 14h10
  5. Réponses: 7
    Dernier message: 22/04/2005, 14h27

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