0

我有一个表USERS,它有一列FULLNAME包含格式中的完整用户名,FirstName LastName我需要切换数据,并使用这种格式在同一列中更新它LastName, FirstName

前任。James Brown需要Brown, James在同一列中切换和更新(FULLNAME

有什么办法吗?

谢谢。

4

2 回答 2

0

假设它们的名称中只有 1 个空格:

UPDATE USERS
SET FULLNAME = RIGHT(FULLNAME,len(FULLNAME) - CHARINDEX(' ',FULLNAME)) +', '+ LEFT(FULLNAME,charindex(' ',FULLNAME)-1)
WHERE LEN(FULLNAME) - LEN(REPLACE(FULLNAME, ' ', '')) = 1
于 2012-06-28T19:01:24.887 回答
0

最好的解决方案是将元素分成两列(姓氏、名字)。但是,如果您想尝试将其压缩到 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”。

于 2012-06-28T19:03:48.263 回答