SSIS派生列尾随零

Fox*_*Fox 2 ssis

我遇到了Derived列的问题.基本上我有一个包含分隔数据的平面文件源.

我的一些列是货币,数据以奇怪的格式保存(旧系统倾向于这样做).

无论如何,数据保存如下:00030.200,0123.410,0002231.210

我需要将这些字符串转换为货币DT_CY.我已经尝试使用所有不同的数字类型直接强制转换,但它们都失败了(不确定是否导致它的前导或尾随零)

所以我的问题很简单.我可以在派生列中使用什么表达式来删除前导零和尾随零.请注意,数据始终不是相同的长度,因此不能完全执行左/右子字符串选项.

有帮助吗?

TX

plo*_*g17 5

您可以使用派生列以这种方式完成它:

Replace(Ltrim(Replace(dataToConvert, "0", " ")), " ", "0")
Run Code Online (Sandbox Code Playgroud)

基本上,您将零转换为空格以利用Ltrim函数.

我创办这个解决方案在这里.

以下是它将如何进行的示例:(假设我们要转换0040.300.为此,我们可以将数字显示为:| 0 | 0 | 4 | 0 |.| 3 | 0 | 0 |以查看如何替换语句影响我们的数据)

基本上,0040.300的转换将以这种方式运行:

  • 内部替换:| | | 4 | |.| 3 | | | ('0'成为空间)
  • Ltrim:| 4 | |.| 3 | | | (修剪左侧空格)
  • outer替换:| 4 | 0 |.| 3 | 0 | 0 | (空格变为'0')

所以我们最终得到40.300.