表1 col
11*22*33
22*33*44
33*55
44表2 col1 col2 col3
11 22 33
22 33 44
33 55 null
44 null null
就是要把表1轉化成表2的形式,但是表1中的col ,例如11*22*33是我自己測試的,不確定有多少項組成。也可能出現 col4 col5 ...。
先謝謝各位大蝦幫忙 !分不夠在加!
create table 表1( col varchar(200))
insert 表1
select '11*22*33' union all select
'22*33*44' union all select
'33*55' union all select
'44'
declare @i int
declare @j int
select @i=max(len(col)-len(replace(col,'*','')))+1 from 表1
update 表1 set col=col+replicate('*',@i-len(col)+len(replace(col,'*',''))-1)
declare @sql varchar(8000)
declare @sql1 varchar(8000)
set @sql='create table #t('
set @j=1
while @j<
=@ibegin
set @sql=@sql+'col'+cast(@j as varchar)+' varchar(10),'
set @j=@j+1
endset @sql=left(@sql,len(@sql)-1)+')'
set @sql=@sql+' insert #t select '''
set @sql1=''
select @sql1=@sql1+replace(col,'*',''',''')+ ''' union all select ''' from 表1
set @sql1=left(@sql1,len(@sql1)-18)+' select * from #t'
exec(@sql+@sql1)
--建立測試環境
create table test(col varchar(100))
insert into test(col) select '11*22*33*55*66'
insert into test(col) select '22*33*44*32'
insert into test(col) select '33*55'
insert into test(col) select '44'
go--建立儲存過程
create procedure sp_test
asbegin
declare @i int,@j int,@col1 varchar(20),@col2 varchar(20)
declare @s varchar(1000)
set @j=1
select @i=max(len(col)-len(replace(col,'*','')))+1 from test
set @s=''
while @j<
=@ibegin
set @s=@s+'alter table test add col'+rtrim(@j)+' varchar(100);'
set @j=@j+1
endexec(@s)
exec('update test set col1=col')
set @j=2
while @@rowcount<>0 and @j<
=@ibegin
select @col1=name from syscolumns where id=object_id('test') and
colid=@j
select @col2=name from syscolumns where id=object_id('test') and
colid=@j+1
set @s='update test set
'+@col1+'
= left(
'+@col1+',charindex(''*'','+@col1+')-1)'
+','+@col2+'=stuff(
'+@col1+',1,charindex(''*'','+@col1+'),'''')'
+' where charindex(''*'','+@col1+')>0'
set @j=@j+1
exec(@s)
endend
go--測試
exec sp_test
select *from test
go--刪除測試環境
drop table test
drop procedure sp_test
--結果
/*col col1 col2 col3 col4 col5
11*22*33*55*66 11 22 33 55 66
22*33*44*32 22 33 44 32 null
33*55 33 55 null null null
44 44 null null null null
一列拆分為多列
表1 col 11 22 33 22 33 44 33 55 44表2 col1 col2 col3 11 22 33 22 33 44 33 55 null 44 null null 就是要把表1轉化成表2的形式,但是表1中的col 例如11 22 33是我自己測試的,不確定有多少項組成。也可能出...
Pandas 一列拆分為多列
假設dataframe中有一列資料為如下形式 需要將year unit deposit pro這一列的資料按照指定分隔符 拆分為12列,並拼接到原始資料中生成新的dataframe。方法如下 資料拆分 拼接 new names gjj pro str x 1 for x in range 12 為新...
dataframe一列拆分成多列 split
假設某一列資料報含多個資訊或乙個字串 id attrs a 1,2,5,3 b 3,1,2,5 c 1,2,0,3 d 1,7,5,3 e 2,1,6,8 我們想把他拆分成多列,做法如下 首先進行拆分 data df data df attrs str.split expand true 然後用pd...