日期:2014-05-18  浏览次数:20527 次

请问这个怎么实现?不好弄啊。
有这样的数据
  col
1,2,3
5,8,9
6,5,4

在sqlserver中怎么样把他转换成
Col1         col2         col3
    1             2                 3
    5             8                 9
    6             5                 4

有什么好办法没有?最好不要用游标,临时表。   我要写在一个函数中


------解决方案--------------------
select
Col1=left(col,charindex( ', ',col)-1),
Col2=substring(col,charindex( ', ',col)+1,charindex( ', ',col,charindex( ', ',col)+1)-charindex( ', ',col)-1),
Col3=reverse(left(reverse(col),charindex( ', ',reverse(col))-1))
from 表
------解决方案--------------------
create table #t
(col varchar(100))
insert into #t
select '1,2,3 ' union all
select '5,8,9 ' union all
select '6,5,4 '


select col1=substring(col,charindex( ', ',col+ ', ',1)-1,1),
col2=substring(col,charindex( ', ',col+ ', ',3)-1,1),
col3=substring(col,charindex( ', ',col+ ', ',5)-1,1)

from #t

col1 col2 col3
---- ---- ----
1 2 3
5 8 9
6 5 4

(3 row(s) affected)
------解决方案--------------------
如果这样,不要用SQL语句.
将数据导出到文本.然后再利用SQL的DTS导入,以逗号分隔就行了.