有这样的数据
col
1,2,3
5,8,9
6,5,4在sqlserver中怎么样把他转换成
Col1 col2 col3
1 2 3
5 8 9
6 5 4有什么好办法没有?最好不要用游标,临时表。 我要写在一个函数中
col
1,2,3
5,8,9
6,5,4在sqlserver中怎么样把他转换成
Col1 col2 col3
1 2 3
5 8 9
6 5 4有什么好办法没有?最好不要用游标,临时表。 我要写在一个函数中
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 表
(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 #tcol1 col2 col3
---- ---- ----
1 2 3
5 8 9
6 5 4(3 row(s) affected)
0 apple
0,apple,ppp
1,orange,ddd
2,bananaandgrape,mmm
insert into tb values('0,apple,ppp')
insert into tb values('1,orange,ddd')
insert into tb values('2,bananaandgrape,mmm')
goselect left(col , charindex(',',col)-1) col1 ,
substring(col,charindex(',',col)+1 , charindex(',',col , charindex(',',col)+1) - charindex(',',col)-1) col2,
reverse(left(reverse(col),charindex(',',reverse(col))-1)) col3 from tb
drop table tb
/*
col1 col2 col3
------------------------------ ------------------------------ -----------0 apple ppp
1 orange ddd
2 bananaandgrape mmm(所影响的行数为 3 行)
*/
数据如果变成下面这样怎么办? col
0,apple,ppp,rrr,ddd,eee,fff
1,orange,ddd,555,33333,444,333
2,bananaandgrape,mmm,90293839,3489djkd,slkj,987
0,P10352,Advertising,-1,-1,-1,-1,-1,-1,-1,2,3,4,5,6,
1,P10283,Advertising,1,1,1,1,1,1,1,1,1,1,1,1,
0,P64829,Events,2,3,5,6,8,65,8,9,8,5,4,5,
0,P10354,Auto,67,-1,67,-1,67,-1,-1,80,56,8,-1,-1,
将数据导出到文本.然后再利用SQL的DTS导入,以逗号分隔就行了.