2017-09-05 2 views
2

J'utilise SSIS et ai un fichier plat de largeur fixe que je tire dans une table DB SQL qui vient comme une chaîne. Il vient avec 0000531164 et qui doit écrire dans la base de données SQL comme 5311.64.Point décimal supposé dans la chaîne convertir dans SSIS

J'utilise une colonne dérivée pour supprimer les 0 mais je ne suis pas sûr si j'ai besoin d'ajouter un. à l'expression ou s'il existe un moyen de convertir un nombre décimal supposé en monnaie correctement?

Current expression = (DT_WSTR,50)(DT_I8)(SUBSTRING(<Table Name>,21,16)) 
+0

essayer de diviser par 100 – EoinS

Répondre

0

Une autre façon, du côté de SQL Server, serait d'utiliser STUFF et puis juste CAST il.

declare @var varchar(64) = '0000531164' 

select cast(stuff(@var,len(@var) - 1,0,'.') as decimal(32,2)) 
0

En dérivé Colonne:

(DT_CY)([FieldName])/100 
0

Je ne pense pas que je l'ai expliqué (ou bien compris) ce qui était nécessaire à ce stade. J'ai un fichier de largeur fixe qui a le niveau de client et le niveau de compte dans le même dossier. Donc, ceux-ci sont séparés dans le paquet en utilisant la division conditionnelle et ensuite j'ai eu besoin de séparer les chiffres avec un. pour obtenir la bonne valeur. J'ai fini par utiliser cette expression (DT_CY) (SUBSTRING (Filler, 37,11) + "." + SUBSTRING (Filler, 48,2)) où "Filler" est mes valeurs de largeur fixe et les numériques sont le début et la longueur de le fichier de largeur fixe.

Avait trop de réflexion, ce fil a aidé à la ligne de base ce qui était nécessaire. Merci à tous.