使用SSIS表达式在中分解全名以分隔字段,最后一个中间 [英] Use SSIS expresion to break up Full Name in to Seperate fields, Last First Middle

查看:5
本文介绍了使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆