SSIS从全名中提取一个名字

还是新的SSIS,但我已经遇到了一个问题,而试图加载到我的数据库的Excel文件。 我想加载我的数据库表的名字,然后姓,但由于某种原因,Excel文件设置有点怪异。

这是Excel文件看起来像Excel文件的一个例子

First Name Last Name ---------- --------- Jason Doe Derek M Smith John L Doe Carol Smith 

所以,第一个之后的每一个条目都有一个空格,因此某些条目在第一个名字中有一个中间的名字,有些则没有。

我想要做的是提取只是名字,离开中间初始。

我现在做的只是修剪看起来像这样的excel文件的空白处。

 TRIM([Member First Name]) **OUTPUT** Jason Derek M John L Carol 

当我尝试切割中间的初始,我开始遇到问题。

  SUBSTRING(TRIM(FULLNAME),1,FINDSTRING(TRIM(FULLNAME)," ",1)) **OUTPUT** Derek John​ 

因此,这种方式删除了初始,但只显示有中间首字母的条目,并留下没有初始空白的条目。

移动TRIM可以使列空白或只显示其名字的第一个字母。

我能做些什么来提取这个名字?

提前致谢。

您的派生列expression式应该是这样的:

 FINDSTRING(TRIM(FULLNAME)," ",1) == 0 ? FULLNAME : SUBSTRING(TRIM(FULLNAME),1,FINDSTRING(TRIM(FULLNAME)," ",1)) 

把你当前的SUBSTRING...三元expression式(又名在线IF),这样它只能做SUBSTRING...如果TRIMMED值有空格。 否则它只是做TRIM。

下面是它应该看起来的psuedocode大纲:

 {Condition} ? {Value if True} : {Value if False} {Condition} is a test that will be TRUE if the trimmed string contains a blank space, and false if it doesn't. The FINDSTRING() function should be useful here. {Value if True} can simply be the current SUBSTRING(...) that you have in your last code snippet. {Value if False} can simply be the TRIM(...) that you have in your second-to-last code snippet. 

我会检查修剪的结果,看看是否返回2空格。 这避免了像Ann Lee这样复杂的名字。

 substring( trim([First name]),len(trim([First name]))-2,1) ==" " ? substring(trim([First name]),1, len(trim([First name]))-3) : trim([First name])