2010-10-05 7 views
4

Lors de la conversion de DT_Décimal en DT_Str, la colonne dérivée décompte les décimales de mon résultat.SSIS (DT_Decimal) à (DT_Str) supprime les zéros de fin pour les décimales

ex .: -0,1250 -2,0000 retours -0.125 retours -2

est-il un moyen de garder les zéros pour avoir une chaîne finale avec toujours quatre décimales?

Voici ma colonne dérivée pour le calcul de la valeur décimale:

(DT_DECIMAL,4)ROUND((DT_Decimal,4)[Column 1]/(DT_DECIMAL,4)@[User::rate],2) 

Voici mon expression de chaîne pour l'amener à droite chaîne aligné avec 11 caractères:

RIGHT(REPLICATE(" ",11) + TRIM((DT_STR,11,1252) 
(DT_DECIMAL,4)ROUND((DT_Decimal,4)[Column 1]/(DT_DECIMAL,4)@[User::rate],2) 
),11) 

J'utilise SSIS 2008.

Merci d'avance. Francis

Répondre

1

Qu'en est-il des tests de posision de "." Si plus que ajouter "0000" et prendre la partie gauche de la chaîne. L'argument length pour la fonction Left doit être la position de "." plus 4

Si zéro puis append » 0,0000"

S'il vous plaît lorsque vous utilisez Attention division. Si vous divisez par zéro, vous obtenez une erreur. Je divise normalement par NULLIF (Rate, 0), et obtient NULL si j'essaie de diviser par zéro.

0

Une option:

(DT_DECIMAL, 4)ROUND(User::rate,4) - removes extra zeroes 

(DT_NUMERIC,18,4)ROUND(User::rate,4) - keeps zeroes