2012-01-28 31 views
4

T-SQLで列の値を分割することについて質問があります。 私はそれをどのように行うことができますSQL Serverをカンマで区切る

Address_col  Country 

Navada   USA 
Tokyo   Japan 
Hanoi   Vietnam 

にコンマで値を分割したい

Address_col 

Nevada,USA 
Tokyo,Japan 
Hanoi,Vietnam 

がありますか?

+0

http://stackoverflow.com/questions/314824/t-sql-opposite-to-string-concatenation-how-to-split-string-into-multiple-reco – Kane

答えて

5
declare @T table (Address_col varchar(20)) 

insert into @T values 
('Nevada,USA'), 
('Tokyo,Japan'), 
('Hanoi,Vietnam') 

select left(Address_col, charindex(',', Address_col)-1) as Address_col, 
     stuff(Address_col, 1, charindex(',', Address_col), '') as Country 
from @T 

更新:
スプリット3つの部分文字列は次のようになります。 宣言@Tテーブル(Address_colのVARCHAR(20))

insert into @T values 
('Nevada,USA,World'), 
('Tokyo,Japan,World'), 
('Hanoi,Vietnam,World') 

select parsename(C, 3), 
     parsename(C, 2), 
     parsename(C, 1) 
from @T 
    cross apply (select replace(Address_col, ',', '.')) as T(C) 
+0

ありがとうMikael Eriksson :) – aliasosx

+0

NEVADAがあれば、アメリカ、世界私は3列に分割したいどのようにすればいいですか? – aliasosx

+0

@aliasosx - 文字列を3つの値で分割する方法で答えが更新されました。値には '、'や '.'は使えないことに注意してください。 –

1

あなたが唯一の2つの部分を持っている場合これは私が考えることができる最も簡単なものです。

選択SUBSTRING(Address_col、1、CHARINDEX( ' ' Address_col)-1)Address_col、 SUBSTRINGとして(Address_col、CHARINDEX(''、Address_col)+ 1、LEN(Address_col))のような国

関連する問題