我的情况:
我有一个Employee字段,我通过SharePoint列表获取该字段。 我得到的当前价值是:
EmployeeID;Employee Firstname Employee Lastname
比如说:
43;Stacky Stackerflow
我需要的是没有;
或者名字和姓氏的ID,
但我无法确定这个ID是1,2或3位长还是无论如何都会告诉你这些名字会有多大。
有没有办法使用SSIS中的任何工具来削减这些?如果是这样的话?如果没有,还有另一种方式吗?
答案 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”和源列名。