在单独的列中划分个人姓名

Divide personal names in separate columns

我有一个名为#MyNames.This table 的table,其中一栏包含人员的全名(姓名space 姓氏)。在这个专栏中,我们可以用 space 区分名字和姓氏,在 them.From 左边我们有名字,在 space 之后我们有 surname.Below 你可以看到 table:

所以我的目的是将这个名称为 MyFullName 的列分成两个单独的列,分别称为 ,FirstName" 和 ,LastName''。为了做到这一点,我尝试使用以下代码:

SELECT LEFT(MyFullName,charindex(' ', MyFullName) - 1) AS FirstName, RIGHT(MyFullName,charindex(' ', MyFullName)-1 )  AS LastName
from #MyNames

此代码的输出不好,我得到如下 table 的结果:

那么谁能帮助我如何修复此代码并正确获得结果,以及如何在一列中输入名字,在另一列中输入名字?

显然,姓氏子句无法正常工作。

而不是使用 RIGHT(MyFullName,charindex(' ', MyFullName)-1 ) 考虑 SUBSTRING(MyFullName,charindex(' ', MyFullName) + 1, 100)(或任何字段长度)。

更好的方法(虽然在我看来不太容易阅读)是用空白的“”字符替换名字部分。 STUFF(MyFullName,1,charindex(' ', MyFullName),'')

这些应该都有效

SELECT LEFT(MyFullName,charindex(' ', MyFullName)-1) AS FirstName,
       SUBSTRING(MyFullName,charindex(' ', MyFullName)+1, 100) AS LastName
from #MyNames

SELECT LEFT(MyFullName,charindex(' ', MyFullName)-1) AS FirstName,
       STUFF(MyFullName,1,charindex(' ', MyFullName),'') AS LastName
from #MyNames

在您的查询中稍作更正应该可以解决问题。

SELECT LEFT(MyFullName,charindex(' ', MyFullName) - 1) AS FirstName
     , RIGHT(MyFullName,len(MyFullName) - charindex(' ', MyFullName))  AS LastName
from #MyNames