使用SSIS表达式在中分解全名以分隔字段,最后一个中间 [英] Use SSIS expresion to break up Full Name in to Seperate fields, Last First Middle
本文介绍了使用SSIS表达式在中分解全名以分隔字段,最后一个中间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个全名字段,其数据格式为
姓名字中间名
某些数据没有中间名,因为它将只是
姓
还有一些数据在姓氏和名字之间有2个空格
姓
所有这些数据都在同一个字段中,我该如何使用SSIS表达式将这些数据拆分为3个独立的字段?
推荐答案
您在这里会有一段糟糕的经历,因为您会有像&los Santos Edwin Paul";这样的名字或许多多姓条件中的任何一个。
我主张在这种情况下使用多个派生列,以帮助您识别哪里出了问题,以便将来进行调试。
A假设名称数据列名为NameFull
。
子双倍空格
我要做的第一件事就是简化你的生活。我不会为一个空格和姓氏和名字之间的两个空格写两个条件句,而是让所有东西都用一个空格来保持一致。
通过名为Name
的派生列组件创建新列,我们将用单个空格替换所有双空格。
REPLACE([NameFull], " ", " ")
der GetFirstSpace
将新的派生列组件添加到数据流。添加一个名为FirstSpace
的新列。我们要使用的表达式是FINDSTRING
FINDSTRING([Name], " ", 1)
der GetLastName
将另一个派生列组件添加到组合中。这将使用我们的新列FirstSpace
的值来切出第一个元素,我将把它填充到名为LastName
的列中
SUBSTRING([Name], 1, [FirstSpace])
der GetSecond空间
将新的派生列组件添加到数据流。添加一个名为SecondSpace
的新列。我们要使用的表达式与第一个类似,但第三个参数将是我们找到的最后一个空格的位置(加1跳过它)
FINDSTRING([Name], " ", [FirstSpace])
der GetSecond名称
类似于LastName,但现在我们将使用第一个和第二个空格
SUBSTRING([Name], [FirstSpace]+1, [SecondSpace])
中间名
此时,您可以看到模式,但现在我们必须处理您的实际数据,而我没有这些数据。如果他们没有列出中间名怎么办?中间名的懒惰/安全方法可能是添加一个派生列,然后只取最右边的N个字符。如果他们有中间名,这将拾取它,否则,它应该直接将其清空。
RIGHT([Name], LEN([Name]) - [SecondSpace] +1)
采用类似方法的答案
这篇关于使用SSIS表达式在中分解全名以分隔字段,最后一个中间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文