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 :

concaténation de données numériques


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Par défaut concaténation de données numériques
    Bonjour à tous!

    En espèrant que quelqu'un pourra m'aider, car je galère vraiment pour de la récup de données depuis un AS400 vers des fichiers CSV avec SQL Server.

    Voilà, dans l'AS400 je dois récupérer dans une base les données numériques suivantes:

    vcliec_CJJCRE;vcliec_CMMCRE;vcliec_CXXCRE;vcliec_CAACRE
    4; 10; 19; 99;
    9; 9; 20; 2;

    CJJCRE= jours
    CMMCRE=mois
    CXXCRE=Siecle
    CAACRE=Année

    Le but de jeu est de concaténer tout ça pour avoir:
    (1° ligne) 04101999
    (2° ligne) 09092002
    ...

    Mon problème est que mes résultats sont sous la forme
    (1° ligne) 4101999
    (2° ligne) 992002
    ...

    Please Help

  2. #2
    Membre émérite Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Par défaut
    une conversion en varchar ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Par défaut
    Couette une réponse

    C'est déjà converti en varchar... à la base les données sont en décimal, je les converti en varchar... mais j'ai toujours ce résultat

  4. #4
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Utilise la fonction to_char(col,'00') pour d'abord convertir tes nombres en entiers sur 2 chiffres (avec potentiellement un 0 devant si le nombre est sur 1 chiffre au lieu de 2), et ensuite concatène
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Par défaut
    La fonction to_char() ne semble pas etre compatible MS SQL server, mais l'idèe est là je pense... c'est quoi l'équivalent chez crosoft ?

  6. #6
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Aucune idée, là mon exemple c'était pour Oracle
    Mais avec la fonction équivalente pour SQL Server tu devrais pouvoir t'en sortir après
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  7. #7
    Membre Expert
    Profil pro
    Dév
    Inscrit en
    Juin 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Dév

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 165
    Par défaut
    Tu peux essayer une double conversion et après virer les séparateurs mais le problème est que la dernière colonne si elle est inférieure à 10 je pense fait planter le truc mais essaie un truc comme ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT REPLACE(CONVERT(VARCHAR, CAST(vcliec_CJJCRE + '/' + vcliec_CMMCRE + '/' + vcliec_CXXCRE + vcliec_CAACRE AS DATETIME), 103),'/','')
    Ceci dit si la dernière colonne est < 10 tu peux faire un CASE genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT
    CASE
    WHEN vcliec_CAACRE<10 THEN '0' + vcliec_CAACRE
    ELSE vcliec_CAACRE
    END 'vcliec_CAACRE'

  8. #8
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Par défaut
    wouaaaaouuhhh

    Ca marche au moins pour mon select,

    maintenant je vais l'insérer ...; mais le plus dur est fait...

    milliards de mercis

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/07/2006, 17h46
  2. Concaténation ne donne pas le résultat attendu
    Par artotal dans le forum Langage
    Réponses: 4
    Dernier message: 12/05/2006, 01h37
  3. [Stockage] Quel SGBD optimisé pour données numériques ?
    Par hoflack dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 17/03/2006, 18h20
  4. Rappatriement de données numériques
    Par manoun1 dans le forum Access
    Réponses: 3
    Dernier message: 20/01/2006, 18h10
  5. Format de données numériques dans une requête
    Par Aurèl90 dans le forum Access
    Réponses: 1
    Dernier message: 16/11/2005, 10h40

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