2016-12-15 2 views
0

J'écris un fichier .txt à partir d'un fichier .xls. J'utilise JasperETL pour lire l'Excel et insérer des données dans MSSQL, puis écrire le fichier .txt.Lecture et écriture de nombres au format .txt à l'aide d'ETL et de SQL

Dans le fichier Excel, j'ai un numéro (somme d'argent) qui ressemble à ceci 20.000,00 mais parfois, en raison de paramètres régionaux, ce nombre est importé dans SQL comme 20,000.00 (séparateurs sont inversées -., Devient et devient. ,).

Mon format final doit ressembler à ceci 20000.00 et pour cela j'utilise la fonction REPLACE dans MSSQL.

Existe-t-il un moyen, à l'aide d'une requête T-SQL, de résoudre ce problème?

J'ai pensé à utiliser l'ancienne méthode et créer des CAS pour chaque format possible, quelque chose comme ça.

CASE WHEN sum like 'x.xxx,xx' THEN... 
WHEN sum like 'x,xxx.xx' THEN... 

Mais je suis également à la recherche de solutions de rechange.

Merci à l'avance,

R

+0

Non Je suis familier avec JasperETL, mais je recommanderais d'appliquer une norme uniforme le plus tôt possible dans votre processus. Si les fichiers source Excel sont la cause première de cette variation, pouvez-vous détecter et importer uniformément dans JasperETL? –

Répondre

0

J'ai effectivement résolu ce problème avec une requête SQL

Si quelqu'un est dans ma situation, voici la réponse

CASE WHEN CHARINDEX('.',@test) > CHARINDEX(',',@test) THEN REPLACE(@test,',','') 
WHEN CHARINDEX('.',@test) < CHARINDEX(',',@test) THEN REPLACE(REPLACE(@test,'.',''),',','.') 

Replace @test with your column