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 :

Insérer des montants négatifs avec le 'moins' après le montant (ex : 4096-)


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2017
    Messages : 18
    Points : 13
    Points
    13
    Par défaut Insérer des montants négatifs avec le 'moins' après le montant (ex : 4096-)
    Bonjour à tous,

    J'ai cherché sur ce forum et sur le net en général, et impossible de trouver une solution à mon problème.
    Tout est dans le titre : est-il possible dans une base oracle de charger des montants négatifs, mais dont le signe moins est APRES le montant ?
    Exemple simple : Je ne dois pas update -4096 mais 4096-

    Technologies : J'utilise vi, Sql Developer 4 et Oracle 11.

    Merci d'avance pour vos réponses.

  2. #2
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Select to_number('4096-','9999MI') 
      from dual

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Tu ne précises pas comment tu insères tes montants : commande INSERT, SQL*Loader, autre ?
    Pas plus si ce format doit être conservé à l'affichage.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2017
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Tout d'abord, merci pour ta rapidité et ton temps.

    Je dois cependant insérer des millions de montants ; certains sont négatifs, et d'autres non. Je ne sais pas si c'est intéressant de le préciser, mais ce sont des données qui viennent de SAP.
    Edit : Il n'est pas nécessaire de garder le sigle moins après le montant, l'idéal étant de charger ces montant dans un format NUMBER pour les retravailler ensuite. Ils sont chargés par un INSERT.
    Edit2: INSERT interprété par SQL Plus si je m'abuse.

    Merci.

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    to_number(regexp_replace(mon_nombre, '([0-9]+)([-+]?)', '\2\1'))
    Cette expression devrait prendre en charge tout nombre entier, quel que soit la place du signe (avant ou après) et en l'absence de signe.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    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
    Aucun besoin d'expression régulière ici mon exemple devrait suffire.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2017
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Navré, j'ai été sous les feux des projecteurs, et je n'ai pas eu le temps de répondre plus tôt.
    En tout cas merci beaucoup ; j'y suis presque !
    J'ai un léger soucis avec les chiffres à virgules, car en effet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT to_number ('4096,55-','9999,99MI')
    FROM dual;
    me sanctionne d'un : INVALID NUMBER.
    Une astuce ?

    Encore merci !

  8. #8
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT to_number ('4096,55-','9999D99MI')
    FROM dual;

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2017
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Génial, merci beaucoup.
    Est ce possible de gérer également les positifs ? Parce qu'évidemment, si je to_number un montant positif avec cette précision, ça n'est pas un nombre valide...
    Sachant que je peux recevoir des montants type 4096 ou 4096-

  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
    Avec un case
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    With Data As (
      Select '4096-' val from dual union all
      Select '4096' val from dual 
    )
    SELECT Case 
            When Instr(val,'-',1) > 0 Then to_number (val,'9999D99MI')
            Else
              to_number (val,'9999D99')
           End        
    FROM data
    mais je pense qu'il doit y avoir encore une meilleur solution.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    With Data As (
      Select '4096-' val from dual union all
      Select '4096' val from dual 
    )
    SELECT to_number (val,'FM9999D99MI')
    FROM data

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2017
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Super, ca me sauve, c'est vraiment gentil ! Je passe en résolu !

    Bonne journée

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

Discussions similaires

  1. comment insérer des info bulles avec c#
    Par meetsmile dans le forum C#
    Réponses: 5
    Dernier message: 20/04/2011, 14h11
  2. Insérer des commentaires Javadoc avec Eclipse
    Par lahmar.abdel1 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 29/04/2010, 14h23
  3. Réponses: 1
    Dernier message: 21/04/2008, 16h00
  4. Réponses: 9
    Dernier message: 19/02/2007, 20h33
  5. Réponses: 1
    Dernier message: 31/01/2007, 11h59

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