我有一个表USERS
,它有一列FULLNAME
包含格式中的完整用户名,FirstName LastName
我需要切换数据,并使用这种格式在同一列中更新它LastName, FirstName
。
前任。James Brown
需要Brown, James
在同一列中切换和更新(FULLNAME
)
有什么办法吗?
谢谢。
我有一个表USERS
,它有一列FULLNAME
包含格式中的完整用户名,FirstName LastName
我需要切换数据,并使用这种格式在同一列中更新它LastName, FirstName
。
前任。James Brown
需要Brown, James
在同一列中切换和更新(FULLNAME
)
有什么办法吗?
谢谢。
假设它们的名称中只有 1 个空格:
UPDATE USERS
SET FULLNAME = RIGHT(FULLNAME,len(FULLNAME) - CHARINDEX(' ',FULLNAME)) +', '+ LEFT(FULLNAME,charindex(' ',FULLNAME)-1)
WHERE LEN(FULLNAME) - LEN(REPLACE(FULLNAME, ' ', '')) = 1
最好的解决方案是将元素分成两列(姓氏、名字)。但是,如果您想尝试将其压缩到 1 列中,并且您假设每个名称都由一个空格分隔
DECLARE @Users TABLE ( Name VARCHAR(100) )
INSERT INTO @Users
( Name
)
SELECT 'James Brown'
UNION ALL
SELECT 'Mary Ann Watson'
SELECT RIGHT(Name, CHARINDEX(' ', REVERSE(Name)) - 1) + ', ' + LEFT(Name,
LEN(Name)
- CHARINDEX(' ',
REVERSE(Name)))
FROM @Users
这也假设如果他们有两个以上的名字,用空格分隔,那么最后一个单词就是姓氏,其他的都是名字。如果“Tucker Jones”是姓氏,则适用于“Mary Ann Watson”,但不适用于“George Tucker Jones”。