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])