SQL Server:分隔名字和姓氏,并将中间首字母删除为两列

时间:2017-02-10 21:30:18

标签: sql sql-server

我有一个包含个人全名的列,包括中间的首字母。我试图将全名分为名字和姓氏,并删除中间名/首字母。我的数据库中的一些名称有一个中间名/初始名,有些则没有。以下查询是我正在使用的,他们都只做了一半的技巧。

查询#1:返回第二列中的名字和中间名/首字母并删除姓氏:

FirstName = LEFT(fullname, CHARINDEX(' ', fullname)), 
LastName = RIGHT(fullname, CHARINDEX(' ', REVERSE(fullname)))

查询#2:返回名字,并将中间名/首字母与姓氏(两者之间有空格)组合在一起:

FirstName = left(fullname,CHARINDEX(' ',fullname)),
LastName =  SUBSTRING(fullname, CHARINDEX(' ',fullname)+1,LEN(fullname)-(CHARINDEX(' ',fullname)-1)) 

1 个答案:

答案 0 :(得分:2)

这个怎么样?

select left(fullname, charindex(' ', fullname + ' ') - 1) as firstname,
       right(fullname, charindex(' ', reverse(fullname) + ' ') - 1) as lastname

注意,这会处理没有空格的名称而不会出错。但是,名字和姓氏相同(完整字符串)。目前还不清楚在这种情况下你想做什么。