Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 从表中提取姓氏、母亲姓氏和姓名_Sql Server_Sql Server 2005 - Fatal编程技术网

Sql server 从表中提取姓氏、母亲姓氏和姓名

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

您好,我需要提取姓氏,母亲姓氏和名字和一个表的名字,它主要由拉丁名组成,所以大多数人有2个名字+,我找到了一种方法,使工作与下面的代码。 我的问题是,是否有更好的方法

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我就是这么做的。但数据已经以这种方式存储