Je gère un processus ETL qui transforme les entrées de fichiers plats en une table de base de données SqlServer. Le code est presque 100% T-SQL et s'exécute dans la base de données. Je ne possède pas le code et ne peux pas changer le flux de travail. Je ne peux que vous aider à configurer le SQL "traduction" qui prend les données du fichier et les convertit en données de table (plus sur cela plus tard).Conversion/conversion d'un nVarChar avec un séparateur de virgules en notation décimale
Maintenant que les non-responsabilité sont hors du chemin ...
L'un de nos fournisseurs de fichiers ont récemment changé la façon dont ils représentent une somme d'argent '12345.67'
-'12,345.67'
. Notre SQL qui transforme la valeur ressemble à SELECT FLOOR(CAST([inputValue] AS DECIMAL(24,10)))
et ne fonctionne plus. C'est-à-dire que la virgule casse la distribution.
Étant donné que je dois conserver la valeur finale Decimal (24,10)
datatype (oui, je me rends compte de la FLOOR
efface toute la précision post-point décimal - le concepteur n'a pas été en phase avec le client), que puis-je faire lancer cette corde efficacement?
Nous vous remercions de vos idées.
Est-ce que l'une de ces réponses a permis de résoudre votre problème? –
@KM: Je discute de ces suggestions avec notre groupe DBA maintenant. De mon côté, l'approche commune proposée (using Replace()) semble fonctionner. Mettra à jour bientôt. – SethO