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 Firebird Discussion :

Incrementer un VARCHAR qui contient des chiffres


Sujet :

SQL Firebird

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 40
    Points : 32
    Points
    32
    Par défaut Incrementer un VARCHAR qui contient des chiffres
    SAlut tlm, voila , j'aimerai utiliser un numero qui s'ecrit '0001' au lieu de 1 pour ma clé primé et mon code fournisseur par expl,donc j'ai créé un champ varchar qui contiendra '0000' , j'arrive a l'icrementer en utilisant 'CAST (...as smallint ) mais voila en l'incrementant il me renvoi pas '0002' mais '2' comment si qq a une idée pour pouvoir toujours garder les zero avant SVP, j'utlise Firebird 1.5
    MErci d'avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 27
    Points : 29
    Points
    29
    Par défaut
    Bonjour,
    Oracle propose ce type de fonction appelée TO_CHAR

    UDF4ORA propose les fonctions d'Oracle pour firebird et Interbase sous la forme: TO_CHARN

    select to_charn(cast(L as integer)+1,'FM0000') from ...

    Retournera le résultat attendu.
    Slts
    PAscal

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2002
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 50
    Points : 52
    Points
    52
    Par défaut
    a ta place je poserais un generateur et une procedre stockée dans firebird.

    pour ton nouvel index la procedure appel le generateur et te retourne ton resultat:
    1) tu recupere la valeur du generateur (qui est incrementée de 1) et tu la passe en char

    manouvellevaleur :=cast [gen_id(mongenerateur,1)] as char ;

    2) tu concatene avec 000, et tu ne gardes que les 4 chiffres en partant de la droite:

    mon resultat := fonction droite( ('000'||manouvellevaleur),4)

    ca marche donc jusqu'au generateur n°999 .

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 27
    Points : 29
    Points
    29
    Par défaut
    Avec ou sans générateur
    la fonction LPAD(entrée, longueur , character ajouté) fournie en standart dans FB permet de retourner un char de longueur prédéfinie en ajoutant autant de charactéres que nécessaie à gauche

    select lpad(1,4,'0') from ...

    retourne
    '0001'

    Slts
    PAscal

Discussions similaires

  1. comment faire une redirection vers une page qui contient des framsets
    Par zana74 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 31/08/2006, 13h03
  2. comment fermer un site qui contient des framesets
    Par zana74 dans le forum Langage
    Réponses: 6
    Dernier message: 20/08/2006, 16h45
  3. composant qui convertis des chiffres en lettre sous Delphi?
    Par ouldfella dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/03/2006, 14h28
  4. insertin d'une chaine qui contient des guillemets
    Par karimspace dans le forum Access
    Réponses: 7
    Dernier message: 13/02/2006, 11h55
  5. Afficher sous Word des données SQL qui contient des retours
    Par samoht dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 30/09/2005, 16h12

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