Reputation: 119
I have the table below
AdviserName
-----------
Tearle, Michael Hearn
Hearn Tearle, Michael
Van Der Welden, Luke
Welden, Luke Van Der
Brennan, Sony G
G Brennan, Sony
Rhammasamysundaran, Vishnu Brahma Kuma
Brahma Kuma Rhammasamysundaran, Vishnu
Basically I need to re-arrange so it become FirstName MiddleName LastName. For example Michael Hearn Tearle or Sony G Brennan or Luke Van Der Welden.
I used below syntax but somehow it doesn't like if the middle name is before the comma like Hearn Tearle, Michael.
If(OBJECT_ID('tempdb..#tempX') Is Not Null)
Drop Table #tempX
create table #tempX (AdviserName varchar(max))
insert into #tempX (AdviserName)
values ('Tearle, Michael Hearn'),('Hearn Tearle, Michael'),('Van Der Welden, Luke'),('Welden, Luke Van Der'),('Brennan, Sony G'),('G Brennan, Sony'),('Rhammasamysundaran, Vishnu Brahma Kuma '), ('Brahma Kuma Rhammasamysundaran, Vishnu ')
--select * from #tempX
select substring(advisername, charindex(',', replace(advisername, ' ', '')) + 1, len(advisername))+' '+ left(advisername, charindex(',', advisername) -1) as AdviserName from #tempX
Below is the result.
AdviserName
--------------------------------------
Michael Hearn Tearle
, Michael Hearn Tearle
n, Luke Van Der Welden
Luke Van Der Welden
Sony G Brennan
, Sony G Brennan
Vishnu Brahma Kuma Rhammasamysundaran
n, Vishnu Brahma Kuma Rhammasamysundaran
How do you make a query to cater both middle name before comma and after comma?
I'm using SQL Server 2012.
Thanks all.
Upvotes: 0
Views: 305
Reputation: 8043
Try this
If(OBJECT_ID('tempdb..#tempX') Is Not Null)
Drop Table #tempX
create table #tempX (AdviserName varchar(max))
insert into #tempX (AdviserName)
values ('Tearle, Michael Hearn'),('Hearn Tearle, Michael'),('Van Der Welden, Luke'),('Welden, Luke Van Der'),('Brennan, Sony G'),('G Brennan, Sony'),('Rhammasamysundaran, Vishnu Brahma Kuma '), ('Brahma Kuma Rhammasamysundaran, Vishnu ')
select
AdviserName,
replace(replace(
SUBSTRING(AdviserName,charindex(',',AdviserName),len(AdviserName))
+' '+
SUBSTRING(AdviserName,1,charindex(',',AdviserName))
,',',''),' ',' ')
from #tempX
Upvotes: 1
Reputation: 5697
;with d as
(select AdviserName, charindex(',',AdviserName) as comma from #tempX)
select
ltrim(rtrim(substring(advisername,comma+1,100)))+' '+ltrim(rtrim(left(advisername,comma-1)))
from d
Upvotes: 1