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

Langage SQL Discussion :

transact sql compliqué. besoin d'aide.


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 49
    Points : 29
    Points
    29
    Par défaut
    bonjour,

    voila sur une base de donnée j'ai des données caractères qui contiennent en réalité des montants de type : "12345.67"

    Pour les besoins de l'applicatif qui les exploite à travers des vues, les valeurs sont reformatées du type : "0000001234567"
    par la syntaxe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select right('0000000000000' + replace(mavaleur,'.',''),13)
    cependant j'ai un soucis avec certains montant négatifs... qui par cette méthode deviennent "00000-1234567" alors qu'il me faudrait "-000001234567"

    j'ai donc écrit la chose suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select replace(replace(valeur,'.',''),'-','-' + right('0000000000000',13 - len(replace(valeur,'.','')) - CHARINDEX ('-',valeur)))
    ce qui fait un formatage correcte , mais du coup, que sur les valeurs contenant le signe '-' .

    Qui pourrait m'aider à trouver une instruction qui me permette de tout traiter..

    Merci

    j'ai oublié un élément qui corse un peu la chose.

    je ne peux faire aucun cast sur cette valeur car elle fait partie d'une vue qui doit permettre des modifications. Or une vue contenant un cast n'authorise plus la redescente de modification sur la table de laquelle elle est issue.

    Et j'ai oublié de précisé que je suis sur SQL Serveur.

    Merci

  2. #2
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 273
    Points : 1 280
    Points
    1 280
    Par défaut
    il faut que tu teste avant le traitement si ton chiffre est négatif en regardant si il commance par "-"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    IF (SELECT LEFT(valeur) = '-')
    SELECT REPLACE(REPLACE(valeur,'.',''),'-','-' + RIGHT('0000000000000',13 - len(REPLACE(valeur,'.','')) - CHARINDEX ('-',valeur)))
    ELSE
    SELECT RIGHT('0000000000000' + REPLACE(mavaleur,'.',''),13)
    OU

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    IF @valeur < 0
    SELECT REPLACE(REPLACE(valeur,'.',''),'-','-' + RIGHT('0000000000000',13 - len(REPLACE(valeur,'.','')) - CHARINDEX ('-',valeur)))
    ELSE
    SELECT RIGHT('0000000000000' + REPLACE(mavaleur,'.',''),13)
    j'suis vert !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 49
    Points : 29
    Points
    29
    Par défaut
    Merci mes ces solutions sont complexes , puisque que cela concerne un des douze champs de mon select , et trois champs doivent subir ce traitement...

    j'ai tout de même réussi à trouver un solution, si ça peut aider (pour un champs appelé "val10" qui fait 13 de long... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     left(val10,charindex('-',val10)) + left('0000000000000',13 - len(val10) +1 ) +  right(ltrim(rtrim(replace(val10,'.',''))),len(val10) - 1 - charindex('-',val10))

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

Discussions similaires

  1. Démission compliquer besoin d'aide
    Par sandra7869100 dans le forum Droit du travail
    Réponses: 3
    Dernier message: 07/01/2015, 07h31
  2. Réponses: 2
    Dernier message: 21/12/2006, 20h12
  3. Backup SQL delocalisé besoin d'aide.
    Par stef228 dans le forum Administration
    Réponses: 3
    Dernier message: 13/07/2006, 08h54
  4. [intermedia] besoin d'aide sur script PL/SQL
    Par SteelBox dans le forum PL/SQL
    Réponses: 8
    Dernier message: 05/01/2004, 19h59

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