使用SSIS的子串和Charindex

时间:2014-07-21 15:28:37

标签: ssis

档案名称

||N:\Health\Local\Information\Tec\IS\Exports\MM\ADQ star pu\H and A ADQ April.csv || 
N:\Health\Local\Information\Tec\IS\Exports\MM\ADQ star pu\Vita April.csv

Update [MM].[dbo].[Star]
SET [Query Name]=
SUBSTRING([File Name], LEN(File Name) - CHARINDEX('\', REVERSE(File Name)) + 2, CHARINDEX('\', REVERSE(File Name)) - CHARINDEX(' ', REVERSE(File Name)) - 1)

我在执行SQL任务中使用上面的查询,该任务检索" H和A ADQ"和" Vita"在一个名为"查询名称"的字段中但现在我想使用Derived Column在SSIS中执行该过程。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

对于SUBSTRING,您已经具有与派生列类似的功能。而不是使用CharIndex -

FINDSTRING( «character_expression», «string», «occurrence» )

以下是编写它的方法...只需将文件名的字符串替换为列名。

SUBSTRING("N:\\Health\\Local\\Information\\Tec\\IS\\Exports\\MM\\ADQ star pu\\H and A ADQ April.csv", 
LEN("N:\\Health\\Local\\Information\\Tec\\IS\\Exports\\MM\\ADQ star pu\\H and A ADQ April.csv") - FindString(REVERSE("N:\\Health\\Local\\Information\\Tec\\IS\\Exports\\MM\\ADQ star pu\\H and A ADQ April.csv"), "\\" ,1) + 2, 
FINDSTRING(REVERSE("N:\\Health\\Local\\Information\\Tec\\IS\\Exports\\MM\\ADQ star pu\\H and A ADQ April.csv"), "\\" ,1) - FINDSTRING(REVERSE("N:\\Health\\Local\\Information\\Tec\\IS\\Exports\\MM\\ADQ star pu\\H and A ADQ April.csv"), " " , 1) - 1)

假设您的列名是[文件名] 表达式为 -

SUBSTRING([File Name], 
 LEN([File Name]) - FindString(REVERSE([File Name]), "\\" ,1) + 2, 
 FINDSTRING(REVERSE([File Name]), "\\" ,1) - FINDSTRING(REVERSE([File Name]), " " , 1) - 1)