Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssis 删除SSI中的前导零_Ssis_Sql Server 2008 R2_Trim_Dts_Leading Zero - Fatal编程技术网

Ssis 删除SSI中的前导零

Ssis 删除SSI中的前导零,ssis,sql-server-2008-r2,trim,dts,leading-zero,Ssis,Sql Server 2008 R2,Trim,Dts,Leading Zero,在将数据导入SQL Server 2008 db之前,我使用SSIS处理遗留系统中的数据。 货币字段的格式如下: 000000xxx.xx 我需要删除前导零。请注意,实际货币值没有固定的位数。例如,它可以是xxxxx.xx或x.xx或xxxxxxxxxx.xx 我发现了这一点,但派生列工具仅显示有限的字符串函数,如访问公式向导 因此,我的问题是: 如何在DTS派生列工具中使用PATINDEX 否则,如何从输入列中删除前导零 您如何查询数据?我想您正在OleDBSource组件上使用直接表访问

在将数据导入SQL Server 2008 db之前,我使用SSIS处理遗留系统中的数据。 货币字段的格式如下:

000000xxx.xx
我需要删除前导零。请注意,实际货币值没有固定的位数。例如,它可以是xxxxx.xx或x.xx或xxxxxxxxxx.xx

我发现了这一点,但派生列工具仅显示有限的字符串函数,如访问公式向导

因此,我的问题是:

  • 如何在DTS派生列工具中使用PATINDEX
  • 否则,如何从输入列中删除前导零

您如何查询数据?我想您正在OleDBSource组件上使用直接表访问,对吗?我不建议这样做,因为桌上的一点零钱可能会弄坏你的包裹

我将从源表中更正包含select的视图,在这个select上,我将使用PATINDEX函数,并且在包中,我将选择视图而不是表

这是一个很好的方法,因为如果您需要做一些小的更改,您可以更改视图而不是包


如果您不想写入视图,可以选择“数据访问模式”=“表或视图”,而不是选择“sql命令”,然后直接在包上写入sql。

您不能在源系统中将数据转换为数字等效类型吗?这应该是删除前导零的快速方法<代码>从myTable中选择CAST(我的货币为十进制(18,2))作为前导零

否则,简单的SSIS方法是使用数据转换任务并将其转换为数字类型(DT_CY/Currency或DT_numeric/numeric工作得很好)

源查询 数据转换 我创建了一个新列currencyCurrency,它是应用了currency[DT_CY]数据类型的stringCurrency

结果
我完全支持不使用表访问模式,一般来说,我赞成将工作推到源系统上,但如果源系统不允许转换,或者您不得不使用字符串,那么这似乎是一个很低的努力。

我可能误解或误解了您的回答。我不认为视图可以解决这个问题,因为对视图的更改也会破坏数据流任务中的OLE DB源。但是没有任何东西会被破坏!他只有错误格式的数据。want Im建议在数据到达SSIS之前更正数据,这意味着使用视图获取数据,并在其中使用任何必要的方法将数据设置为必要的格式
SELECT '000000111.11' AS stringCurrency
UNION ALL SELECT '0.22'
UNION ALL SELECT '03.33'
UNION ALL SELECT '004.44'
UNION ALL SELECT '0005.55'
UNION ALL SELECT '00000000000000000006.66'
stringCurrency            currencyCurrency
000000111.11              111.11
0.22                      0.22
03.33                     3.33
004.44                    4.44
0005.55                   5.55
00000000000000000006.66   6.66