La bonne manière

Tagged:

Bon ya toujours une bonne et une mauvaise manière de faire les choses ... C'est dingue j'ai toujours l'impression a posteriori d'avoir pris la mauvaise ... Sur le moment persuadé d'avoir pris la bonne naturellement ... =)

Bref la il sagit de base de donnée (DB2 essentiellement je sais pas si les autres ont quelque chose d'équivalent)... il sagit de format de donnée... Il sagit de récupérer une valeur en chaine d'une longueur fixe avec un filler de 0 devant si besoin est tout ça en partant d'un entier ...

Je m'explique :

SELECT CHAMP FROM MATABLE
 
CHAMP
-----
1.256
12.354
365.524

Voila et moi il me faut :

CHAMP
-----
001256
012354
365524

J'ai d'abord fait :

SELECT
  CASE CHAMP < 10000 THEN '00' CONCAT CHAMP
  CASE CHAMP < 100000 THEN '0' CONCAT CHAMP
  ELSE CHAMP
END AS CHAMP 
FROM MATABLE

Voila ce qui marche naturellement mais qui est assez verbeux ... Or il existe une fonction appelée DIGITS qui fait tout ça très bien ... Alors c'est magique, il va faire un padding a gauche et renvoyer une chaine... Simplement il fait le padding par rapport au type dans la base ... si par exemple c'est un INTEGER(16) il va renvoyer 16 positions ...

Mais du coup ma requete devient :

SELECT DIGITS(CHAMP) FROM MATABLE

Comme quoi ont est toujours loin de tout connaitre ...