私はテーブルを持っていて、そのフォーマットに完全なユーザー名を含む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
最善の解決策は、要素を 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」には機能しません。