我的情况:
我有一个通过 SharePoint 列表获取的 Employee 字段。我得到的当前值是:
EmployeeID;Employee Firstname Employee Lastname
比如说:
43;Stacky Stackerflow
我需要的只是没有;
名字或姓氏的 ID,但我无法判断 ID 的长度是 1、2 还是 3 位,或者无论如何都无法判断名称的大小。有没有办法使用 SSIS 中的任何工具来削减这些?如果有怎么办?如果没有,还有其他方法吗?
我的情况:
我有一个通过 SharePoint 列表获取的 Employee 字段。我得到的当前值是:
EmployeeID;Employee Firstname Employee Lastname
比如说:
43;Stacky Stackerflow
我需要的只是没有;
名字或姓氏的 ID,但我无法判断 ID 的长度是 1、2 还是 3 位,或者无论如何都无法判断名称的大小。有没有办法使用 SSIS 中的任何工具来削减这些?如果有怎么办?如果没有,还有其他方法吗?
这是我的答案的复制和粘贴: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(";");
因为这是标记为 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
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”替换为您的源列名称。