0

私はテーブルを持っていて、そのフォーマットに完全なユーザー名を含むUSERS列があり、このフォーマットを使用してデータを切り替え、同じ列で更新する必要があります。FULLNAMEFirstName LastNameLastName, FirstName

元。同じ列に切り替えて更新James Brownする必要があります ( )Brown, JamesFULLNAME

それを行う方法はありますか?

ありがとう。

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

最善の解決策は、要素を 2 つの列 (LastName、FirstName) に分割することです。ただし、それを 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 

これはまた、スペースで区切られた名前が 2 つ以上ある場合、最後の単語が姓で、それ以外はすべて名であると想定しています。「Tucker Jones」が姓の場合、「Mary Ann Watson」には機能しますが、「George Tucker Jones」には機能しません。

于 2012-06-28T19:03:48.263 に答える