Sql server 从表中提取姓氏、母亲姓氏和姓名
您好,我需要提取姓氏,母亲姓氏和名字和一个表的名字,它主要由拉丁名组成,所以大多数人有2个名字+,我找到了一种方法,使工作与下面的代码。 我的问题是,是否有更好的方法Sql server 从表中提取姓氏、母亲姓氏和姓名,sql-server,sql-server-2005,Sql Server,Sql Server 2005,您好,我需要提取姓氏,母亲姓氏和名字和一个表的名字,它主要由拉丁名组成,所以大多数人有2个名字+,我找到了一种方法,使工作与下面的代码。 我的问题是,是否有更好的方法 Declare @t table ( [Name] varchar(100) ) insert into @t ( Name ) VALUES ('Gomez Flores Roberto'), ('DELGADO PEREZ MARIA TERESA'), ('MARTINEZ VELASCO MARTIN A
Declare @t table ( [Name] varchar(100) )
insert into @t ( Name )
VALUES ('Gomez Flores Roberto'), ('DELGADO PEREZ MARIA TERESA'), ('MARTINEZ VELASCO MARTIN AGUSTIN DOMINGO'), ('BURGOS JIMENEZ ERNESTO')
SELECT
substring(name,0,charindex(' ',name)) as LasName
,substring(substring(name, charindex(' ',name)+1,(len(name)- charindex(' ',name))),0,charindex(' ',substring(name, charindex(' ',name)+1,(len(name)- charindex(' ',name))))) MiddleName
,substring(substring(name, charindex(' ',name)+1,(len(name)- charindex(' ',name))), charindex(' ',substring(name, charindex(' ',name)+1,(len(name)- charindex(' ',name))))+1,(len(substring(name, charindex(' ',name)+1,(len(name)- charindex(' ',name))))- charindex(' ',substring(name, charindex(' ',name)+1,(len(name)- charindex(' ',name)))))) as Name
FROM @t
感谢您的时间和帮助计算@t.name中每个值有多少个名称可能会有所帮助。例如,戈麦斯·弗洛雷斯·罗伯托有3个,德尔加多·佩雷斯·玛丽亚·特雷莎有4个。从中获取最大数量将告诉您需要多少字段,并允许您在一定数量后进行一些数据清理或截断。 找到这篇可能有用的文章
最好的方法是将值存储在单独的列中-firstname、lastname等。这不是更好的方法,因为您将遇到各种违反现有规则的异常<代码>丹尼斯·德拉莫塞利·威廉姆斯和奥斯卡·范德纳茨三世,诸如此类的事情。正是因为这个原因,数据清理工具非常昂贵。@AaronBertrand谢谢,在我完成这项工作后,我会处理这些工具。@TGH我就是这么做的。但数据已经以这种方式存储