小编典典

将全名分为名字和姓氏

sql

我有一个客户列表,其名称为全名。我想创建一个将全名作为参数并分别返回名字和姓氏的函数。如果不可能,我可以有两个单独的函数,一个返回名字,另一个返回姓氏。全名列表包含最多三个单词的名称。我想要的是:

  • 全名由两个词组成时。第一个应该是名称,第二个应该是姓氏。
  • 当一个全名由三个词组成时。第一个单词和中间单词应为名字,第三个单词应为姓氏。

例子:-

**Full Name**    
John Paul White    
Peter Smith    
Ann Marie Brown    
Jack Black    
Sam Olaf Turner

结果:-

**First Name    Last Name**    
John Paul     White    
Peter         Smith      
Ann Marie     Brown    
Jack          Black    
Sam Olaf      Turner

我搜索并找到了无法按预期运行的解决方案,并希望获得一些建议。


阅读 217

收藏
2021-04-07

共1个答案

小编典典

简明扼要

DECLARE @t TABLE(Fullname varchar(40))
INSERT @t VALUES('John Paul White'),('Peter Smith'),('Thomas')

SELECT
  LEFT(Fullname, LEN(Fullname) - CHARINDEX(' ', REVERSE(FullName))) FirstName,
  STUFF(RIGHT(FullName, CHARINDEX(' ', REVERSE(FullName))),1,1,'') LastName
FROM
  @t

结果:

FirstName  LastName
John Paul  White
Peter      Smith
Thomas     NULL
2021-04-07