请问高手,如何将'a,b,c' 分解成 a b c 三行?

stwx 2003-10-19 05:29:26
declare @icode varchar(100)
set @icode='a,b,c,d,e'

如何select 出

a
b
c
d
e
五行的一个数据集?
...全文
88 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
CrazyFor 2003-10-19
  • 打赏
  • 举报
回复


--N要连继,
select top 8000 identity(int,1,1) as N into numtab from
(select top 100 id=1 from sysobjects) as a,
(select top 100 id=1 from sysobjects) as b,
(select top 100 id=1 from sysobjects) as c

---------------------------------------------------------------------
declare @a table (id int,string varchar(8000))
insert @a select 1 ,'a,b,c,sd,dfsdfg'
union select 2, 'a,n,sdf,we,t'
union select 3, 's,df,df'



select a.*,b.*,id,substring(','+string+',',N+1,charindex(',',','+string+',',N+1)-(N+1))
from @a a,numtab b
where substring(','+string+',',N,8000) like ',_%'
order by id,N
zarge 2003-10-19
  • 打赏
  • 举报
回复
declare @icode varchar(100)
set @icode='a,b,c,d,e'

declare @sql varchar(8000)
set @sql = 'select ''' + replace(@icode, ',', ''' union all select ''') + ''''
exec(@sql)
orcale 2003-10-19
  • 打赏
  • 举报
回复
declare @icode varchar(100)
declare @i int
create table #t(c char(1))
set @icode='a,b,c,d,e'
set @i=1
while @i<=len(@icode)
begin
insert into #t select substring(@icode,@i,1)
set @i=@i+2
end
select * from #t
drop table #t
youngby 2003-10-19
  • 打赏
  • 举报
回复
学习..........
youngby 2003-10-19
  • 打赏
  • 举报
回复
declare @a varvhar(10),@b varchar(10),@c varchar(10),@d varchar(10),@e varchar(10)
set @a = substring(@icode,1,1)
@b = substring(@icode,3,1)
@c = substring(@icode,5,1)
@d = substring(@icode,7,1)
@e = right(@icode,1)

Create table #myTable
(
myColumn Varchar(20)
)

insert #myTable (myColumn)
values(@a)
insert #myTable (myColumn)
values(@b)
insert #myTable (myColumn)
values(@c)
insert #myTable (myColumn)
values(@d)
insert #myTable (myColumn)
values(@e)

go

select * from #myTable
Go
welyngj 2003-10-19
  • 打赏
  • 举报
回复
create function f_splitstr(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(F1 varchar(100))
as
begin
declare @i int
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
while @i>=1
begin
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql<>''
insert @temp values(@SourceSql)
return
end
--执行
go
select * from dbo.f_splitstr('1,2,3,4',',')
youngby 2003-10-19
  • 打赏
  • 举报
回复
用substring 函数读取字符,
再用INSERT插入行

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧