|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : décembre 2007 Messages : 239 ![]() |
Bonjour,
J'ai dans ma base de données (type SQLite) un champ "codeP" d'une table. ce champ est la primary key de ma table, et je voudrais poser un "mask" sur ce champ pour qu'au lieu de m'afficher "1", "2", etc il m'affiche "00001", "00002",..., "00010", ... , "00110" et ainsi de suite. Ceci est juste dans le but d'avoir l'affichage d'un code à 5 chiffres quel que soit le numéro du codeP. Pourriez m'indiquer comment réaliser ceci? |
|
|
00
|
|
|
#2 | ||||
|
Membre actif
![]() Inscription : décembre 2004 Messages : 169 ![]() |
Salut,
pour un formatage d'un nombre sur 5 chiffres en SQL : select substr('0000' || codeP,length(codeP)) Exemple : Code :
00001|abcd 00002|fgh a+ PS: On peut utiliser une vue : Code :
|
||||
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : décembre 2007 Messages : 239 ![]() |
Le problème, c'est que ça ne fait pas vraiment office de "mask" au sens où je l'entend:
par exemple si j'ai codeP = 10, ça me donnera 000010, alors que je veux avoir 00010 . Le but serait de faire disons: 00000 + CodeP (sauf que je veux afficher tous les zeros). Et étant donné que je ne pourrais pas modifier la table à chaque fois, il faudrait au mieux que je mette ce "mask" à la création de ma table afin que j'ai toujours 5 chiffres dans ce champ (ni plus ni moins). Cela est-il possible? Merci de votre aide. PS: sinon j'essaierai de gérer ça directement dans le programme qui se sert de SQLite, mais j'aurais préféré avoir strictement la meme chose dans le SGBD et dans le programme... |
|
|
00
|
|
|
#4 | ||
|
Membre actif
![]() Inscription : décembre 2004 Messages : 169 ![]() |
Non,
Tu aurais du mieux regarder mon code avant de répondre, ça fait bien ce que tu demandes ! Voici la trace d'un exemple complet : Code :
Tu as bien toujours 5 caractères à l'affichage. a+ |
||
|
|
00
|
|
|
#5 |
|
Membre actif
![]() Inscription : décembre 2004 Messages : 169 ![]() |
PS: Si tu voulais un formatage à droite (par exemple avec des espaces) tu pourrais avoir une formule du genre :
Code :
SELECT substr(codeP || ' ',6-length(codeP)) |
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : décembre 2007 Messages : 239 ![]() |
Ca m'interesse un peu plus alors, mais mon but est quand meme de stocker cette variable sous forme "00001" au lieu de "1", je ne crois pas savoir (je précise que je suis on ne peut plus débutant) qu'une vue permette de faire ça, est ce que "substr" pourrait me faire ça à la création de ma table?
Encore merci de ton aide |
|
|
00
|
|
|
#7 | ||||
|
Membre actif
![]() Inscription : décembre 2004 Messages : 169 ![]() |
Ha, mais ce n'est pas la même chose. Dans ton premier post c'était uniquement pour afficher...
Mais ce n'est pas grave, on peut tricher pour obtenir ton résultat. Voici ce que je te propose : une colonne primary key cachée qui alimente ta colonne codeP lors des insert. En théorie, tu ne devrais jamais modifier la codeP avec un update puisque c'est une clé primaire. Donc pas de trigger pour les updates. Voici un script qui résume tout : Code :
Code :
Au résultat : pas de vue, une colonne qui se comporte comme une clé primaire et comme si elle était numérique car elle contient soit la valeur numérique que tu y mets, soit la valeur de l'autoincrément qui est gérée par SQLite. ouf. a+ |
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com