2012-01-28 121 views
4

我有一個關於在T-SQL中拆分列值的問題。 我通過逗號分隔的SQL Server

Address_col 

Nevada,USA 
Tokyo,Japan 
Hanoi,Vietnam 

我想用逗號值拆分

Address_col  Country 

Navada   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 2012-01-28 08:47:39

回答

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 

更新:
分裂由三個部分組成的字符串可以是這樣的: 聲明@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 2012-01-28 09:27:31

+0

如果我有NEVADA,美國,世界我想分成3欄我該怎麼辦? – aliasosx 2012-01-28 09:52:03

+0

@aliasosx - 使用三種值拆分字符串的方式更新了答案。請注意,值中不能有任何','或'.'。 – 2012-01-28 14:35:26

1

如果你只有兩個部分,然後這是我能想到的最簡單的方法。

選擇SUBSTRING(Address_col,1,CHARINDEX( ' 'Address_col)-1)作爲Address_col, SUBSTRING(Address_col,CHARINDEX(',',Address_col)+ 1,LEN(Address_col))作爲國家