SSIS:字符串特定部分的修剪字段

时间:2013-11-05 15:02:53

标签: sql string sharepoint ssis expression

我的情况:

我有一个Employee字段,我通过SharePoint列表获取该字段。 我得到的当前价值是:

EmployeeID;Employee Firstname Employee Lastname

比如说:

43;Stacky Stackerflow

我需要的是没有;或者名字和姓氏的ID, 但我无法确定这个ID是1,2或3位长还是无论如何都会告诉你这些名字会有多大。 有没有办法使用SSIS中的任何工具来削减这些?如果是这样的话?如果没有,还有另一种方式吗?

3 个答案:

答案 0 :(得分:3)

这是我的答案复制并粘贴:Split a single column of data with comma delimiters into multiple columns in SSIS

您可以使用Token表达式来隔离由well,delimiters分隔的字符串。

  

TOKEN(character_expression,delimiter_string,occurrence)

所以

  

TOKEN(EmployeeField,“;”,1)

会给你你的身份证件

您还可以设置一个简单的转换脚本组件。使用“DATA”列作为输入,并根据需要添加任意数量的输出。使用拆分方法即可设置。

string[] myNewColumns = inputColumn.split(";");

答案 1 :(得分:0)

因为这是标记的SQL,我将使用该语法回答:

select left(Employee, charindex(';', Employee) - 1)

如果您希望将其作为整数,请使用:

select (case when isnumeric(left(Employee, charindex(';', Employee) - 1)) = 1
             then cast(left(Employee, charindex(';', Employee) - 1) as int)
        end) as EmployeeId

答案 2 :(得分:0)

1.-如果列表中的所有值都以“;”分隔那么你只需要用“;”导入文件分隔符,您不需要指定任何长度。

2.-如果只有这个字段有“;”那么你可以在SSIS上使用派生列,使用SUBSTRING SQL函数,类似于:

    select SUBSTRING('first;second', 1, CHARINDEX(';', 'first;second') - 1) AS First,
    SUBSTRING('first;second', CHARINDEX(';', 'first;second') + 1, 8000) AS SecondV

将上面示例中的字符串替换为“first; second”和源列名。