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

MS SQL Server Discussion :

Comment ajouter des leading zero ?


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Par défaut Comment ajouter des leading zero ?
    Bonjour,
    J'ai modifié un script initialement prévu pour DB2 pour tourner sur SQL server 2005 et qui genere un fichier .csv.

    Voici le code modifié :
    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
     
     SET NOCOUNT ON;
     SELECT 
     I.ITEMUTXTYP,
            C.CURRISO,
            SUM(I.AMOUNT * CAST(REPLACE(REPLACE(REPLACE(REPLACE(I.ITEMSIGN,'RC',-1),'RD',1),'C',1),'D',-1) AS SMALLINT)) AS AMOUNT,
            (SELECT SUBSTRING(SYSTIME,1,8) FROM MVTIME) AS RUNDATE,
            (SELECT SYSTIME FROM MVTIME) AS RUNTIME
     FROM ITEMS I, CURCD C, VDEPTM D
     WHERE I.CURIDE = C.CURIDE
       AND I.ITEMSAVAIL = 'A'
     AND I.ITEMSTAT != 'M'
       AND I.ITEMUTXTYP LIKE 'N___'
       AND I.ITEMDAVAIL <=  & strDate
       AND (I.CODEID IS NULL OR I.CODEID = D.VDEPID)
       AND D.MODXONKEY != 'NOT'
     GROUP BY I.ITEMUTXTYP,
              C.CURRISO
     HAVING SUM(I.AMOUNT * CAST(REPLACE(REPLACE(REPLACE(REPLACE(I.ITEMSIGN,'RC',-1),'RD',1),'C',1),'D',-1) AS SMALLINT)) != 0;
    Exemple de resultat à obtenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NINV;EUR;-000000000000000000000000850.0000;20071128;20071128143611900000
    Exemple d'un resultat obtenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NTEL;EUR;                               -188.5100;20120313;20120313154735060000
    Question 1 : Comment puis je faire pour inserer des leading zero entre le signe et le montant afin que tout s'affiche toujours avec un total de 32 caracteres ?
    Question 2 : A votre avis, est ce que ce script retournera un signe "+" lorsque le montant est positif ? (pour l'instant je n'ai que des signes "-" dans mes resultats, mais peut etre est ce du aux montants de la DB... que je n'ai pas encore vérifié.)
    Merci par avance pour votre aide.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre averti
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Par défaut
    Bonjour Frédéric,
    Merci pour la réponse et les infos.
    C'est tres instructif.

    Comme je n'ai pas une formation en informatique et que je fais cela pour mon apprentissage personnel, cela m'est un peu difficile de comprendre tout le process.

    Est ce que cela serait trop demandé de m'expliquer (comme à un newbie) les differentes étapes que je dois suivre pour mettre en place ta solution.
    si j'ai bien compris, je dois d'abord utiliser le :
    CREATE FUNCTION...

    Mais ensuite, j'ai du mal à voir comment je dois modifier mon script pour obtenir le résultat escompté.
    Merci beaucoup pour l'aide !

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Par défaut
    Lancer le script SQL dans la bonne base cela créée la fonction puis l'utiliser dans votre requête.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre averti
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Par défaut
    Frederic,
    Merci beaucoup pour l'aide et les infos !
    Cela fonctionne tres bien.

  6. #6
    Membre averti
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Par défaut
    Désolé j'ai pensé que c'etait résolu mais en fait tout avait l'air de fonctionner lorsque j'ai testé que la fonction pour les leading zero.

    Lorsque j'ai inclus cette fonction dans mon script :
    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
    SET NOCOUNT ON;
     SELECT 
     I.ITEMUTXTYP,
            C.CURRISO,
           dbo.F_PAD_LEADING_ZERO(SUM(I.AMOUNT * CAST(REPLACE(REPLACE(REPLACE(REPLACE(I.ITEMSIGN,'RC',-1),'RD',1),'C',1),'D',-1) AS SMALLINT)),10) AS AMOUNT,
            (SELECT SUBSTRING(SYSTIME,1,8) FROM MVTIME) AS RUNDATE,
            (SELECT SYSTIME FROM MVTIME) AS RUNTIME
     FROM ITEMS I, CURCD C, VDEPTM D
     WHERE I.CURIDE = C.CURIDE
       AND I.ITEMSAVAIL = 'A'
     AND I.ITEMSTAT != 'M'
       AND I.ITEMUTXTYP LIKE 'N___'
       AND I.ITEMDAVAIL <=  & strDate
       AND (I.CODEID IS NULL OR I.CODEID = D.VDEPID)
       AND D.MODXONKEY != 'NOT'
     GROUP BY I.ITEMUTXTYP,
              C.CURRISO
     HAVING SUM(I.AMOUNT * CAST(REPLACE(REPLACE(REPLACE(REPLACE(I.ITEMSIGN,'RC',-1),'RD',1),'C',1),'D',-1) AS SMALLINT)) != 0;
    J'ai une erreur :
    Msg 245, Level 16, State 1, Line 1
    Conversion failed when converting the varchar value '-300.0000' to data type int.
    Savez vous d’où provient l'erreur ? et comment la résoudre ?
    En vous remerciant à tous pour votre aide.

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

Discussions similaires

  1. [JTable]Comment ajouter des JCheckBox
    Par @yoyo dans le forum Composants
    Réponses: 7
    Dernier message: 24/03/2006, 14h27
  2. Comment ajouter des cases à cocher
    Par @yoyo dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 23/03/2006, 10h16
  3. [dbExpress et mysql] Comment ajouter des connexions ?
    Par servlet1 dans le forum Bases de données
    Réponses: 5
    Dernier message: 30/09/2005, 09h38
  4. [EXPORT] Comment ajouter des packages au .jar ?
    Par djskyz dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 12/08/2004, 23h23
  5. [debutant] Comment ajouter des .class ?
    Par Slein dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 30/04/2004, 14h30

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