2017-04-17 44 views
0

分成姓氏和名字我有一個包含名字和下面如何命名在SQL

First_Name LAST_NAME

John  Milano 
Garry  Sanders 
      Barr, Jerome P 
      Venti, Louis 

我需要糾正其在全名中的某些行姓氏表列名Last_name。我期望的輸出是: -

First_Name LAST_NAME

John  Milano 
Garry  Sanders 
Jerome  Barr 
Louis  Venti 

提前感謝!

+0

確保您在修復現有記錄之前防止再次發生。 –

回答

2

這將讓你關閉,與一對夫婦的注意事項:1)有些名字有兩個詞 - 「瑪麗安」等等,所以你可能想保留這些。 2)您只想更改LAST_NAME列包含逗號的行。

UPDATE MyTable 
    SET First_Name = LTRIM(SUBSTRING(LAST_NAME, CHARINDEX(',', LAST_NAME) + 1, 100)), 
     LAST_NAME = LTRIM(RTRIM(SUBSTRING(@name, 0, CHARINDEX(',', @name)))) 
WHERE CHARINDEX(',', LAST_NAME) > 0 

所以,你將有「Jerome P」作爲第一個名字。如果你想限制名字到一個單詞,你將不得不多做一點。這應該工作:

UPDATE MyTable 
    SET First_Name = LTRIM(RTRIM(SUBSTRING(@name, 0, CHARINDEX(' ', @name)))) 
WHERE CHARINDEX(' ', First_Name) > 0 
1

可以使用的情況下表達CHARINDEXLEFT

select 
    First_Name 
    ,case 
     when charindex(',',LAST_NAME) > 1 then left(LAST_NAME,charindex(',',LAST_NAME) - 1) 
     else LAST_NAME 
    end as LAST_NAME 
From YourTable 

declare @var varchar(64) = 'Barr, Jerome P' 

select 
case 
    when charindex(',',@var) > 1 then left(@var,charindex(',',@var) - 1) 
    else @var 
end