Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/03/2007, 10h41   #1
Candidat au titre de Membre du Club
 
Inscription : février 2006
Messages : 40
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 40
Points : 11
Points : 11
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
nassoft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2007, 21h44   #2
Membre à l'essai
 
Inscription : avril 2005
Messages : 25
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 25
Points : 23
Points : 23
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
pascal_legrand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2007, 14h51   #3
Membre à l'essai
 
Inscription : septembre 2002
Messages : 49
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 49
Points : 23
Points : 23
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 .
jupierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2007, 22h07   #4
Membre à l'essai
 
Inscription : avril 2005
Messages : 25
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 25
Points : 23
Points : 23
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
pascal_legrand est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h55.


 
 
 
 
Partenaires

Hébergement Web