0

我的情况:

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

EmployeeID;Employee Firstname Employee Lastname

比如说:

43;Stacky Stackerflow

我需要的只是没有;名字或姓氏的 ID,但我无法判断 ID 的长度是 1、2 还是 3 位,或者无论如何都无法判断名称的大小。有没有办法使用 SSIS 中的任何工具来削减这些?如果有怎么办?如果没有,还有其他方法吗?

4

3 回答 3

3

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

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

TOKEN(character_expression,delimiter_string,出现)

所以

TOKEN(EmployeeField, ";", 1)

会给你你的身份证

您还可以设置一个简单的转换脚本组件。使用您的“数据”列作为输入,并根据需要添加尽可能多的输出。使用 split 方法就可以了。

string[] myNewColumns = inputColumn.split(";");
于 2013-11-05T15:21:04.370 回答
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
于 2013-11-05T15:18:45.410 回答
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”替换为您的源列名称。

于 2013-11-05T15:22:58.930 回答