2017-12-06 7 views
0

前と後、私は基本的に私はそれがFirstNameとLastNameのMiddleNameになって再配置する必要がある文字列スワップコンマ

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 

下記の表を持っています。たとえばMichael Hearn TearleやSony G Brennan、Luke Van Der Weldenなどです。

私は以下の構文を使用しましたが、ミドルネームが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 

以下は結果です。

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 

どのようにカンマの前とカンマの後にミドルネームを使用するようにクエリを作成しますか?

私はSQL Server 2012を使用しています。

ありがとうございます。

答えて

1

この

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 
+0

おかげジャヤサヤを試してみて、私はマイケル・ハーンTearleやルークファンデWeldenのような姓MiddleName LastNameのようにするために必要です。カンマを削除するだけです。 –

+0

@AdhityaSanusi、申し訳ありませんが、マイナーコードを変更しました。今すぐチェック –

+0

はい!それは働いている。素晴らしい!あなたの助けに感謝Jayasurya。心から感謝する。 –

1
;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 
+0

WOWW ITは働いています。クエリの仕組みを説明してください。特にカンマ+1100とカンマ-1で? –

+1

'comma'は文字列中のコンマのインデックスに過ぎません。私は 'charindex'ビットを2回書くのは嫌いなのでCTEでやったので、おそらくもっと複雑に見えます。 100は単純に 'SUBSTRING'関数が長さを必要とするためです - この数値は実際には最も長い' AdviserName'のサイズである必要があります – LoztInSpace

関連する問題