2017-04-17 1 views
0

에 이름과 성으로 이름을 분할하는 방법 Last_name 열. 사전에내가 먼저 이름과 내가의 완전한 이름을 가진 일부 행을 수정해야 다음과 같이</p> <p><code>First_Name LAST_NAME</code></p> <pre><code>John Milano Garry Sanders Barr, Jerome P Venti, Louis </code></pre> <p>성을 포함하는 테이블이 SQL

First_Name LAST_NAME

John  Milano 
Garry  Sanders 
Jerome  Barr 
Louis  Venti 

감사합니다 - : 내 원하는 출력입니다! 1) 일부 첫번째 이름이 두 단어가 있습니다

+0

기존 레코드를 수정하기 전에 재발을 방지해야합니다. –

답변

2

을 CASE 표현식을 사용할 수 있습니다 이것은 당신이 몇 가지주의 사항과 함께, 닫습니다 얻을 것이다 - "Mary Ann"등. 그래서 아마 그걸 지키고 싶을거야. 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