sql字符分割问题

zhengshaodong 2009-12-11 05:01:33
在存储过程里
create procedure [up_test]
(
@str varchar(1000) ---传入@str = '1@2@3@4@5'
)
AS
--------------我需要把@str以'@'分割,然后循环插入tb表里的a字段

GO
...全文
110 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhengshaodong 2009-12-11
  • 打赏
  • 举报
回复
呵呵 分少 感谢大家了 结贴
jinjazzli 2009-12-11
  • 打赏
  • 举报
回复



---------------------------------------------
--> Author : jinjazzli
--> Target : ---->1000
--> Date : 2009-12-11 17:07:02
--> Version: SQL Server 2005
---------------------------------------------

--> 测试数据: @tb
create table #tb(code varchar(10),id varchar(10))

declare @str varchar(20),@s varchar(4000)
set @str='1@2@3@4'


set @s ='select ''@'','+ replace(@str,'@',' union all select ''@'',')

insert #tb exec(@s)

------------------------------------
select * from #tb
code id
---------- ----------
@ 1
@ 2
@ 3
@ 4

(4 行受影响)

drop table #tb
nianran520 2009-12-11
  • 打赏
  • 举报
回复
alter procedure [up_test] 
( @code varchar(20),
@str varchar(1000)
)
AS
begin
select @str = 'insert into tb(code,a) select '''+@code+''', '''+
replace(@str,'@',''' union all select '''+@code+''', ''')+''''
exec(@str)
end
jiangshun 2009-12-11
  • 打赏
  • 举报
回复

create table TB(col int)

declare @str varchar(100), @sql varchar(400)
set @str = '1@2@3@4@5'
select @sql=replace('@'+@str,'@',')'+char(10)+' insert into TB values(')
set @sql=right(@sql,len(@sql)-1)+')'
exec(@sql)

select * from TB

/*
col
-----------
1
2
3
4
5

(所影响的行数为 5 行)

*/
drop table TB
zhengshaodong 2009-12-11
  • 打赏
  • 举报
回复
哦 忘记还有一个参数的话
@code
@str

要把@str分割后的值和@code(每次插入@code都一样的)循环这样插入表A
jinjazzli 2009-12-11
  • 打赏
  • 举报
回复



---------------------------------------------
--> Author : jinjazzli
--> Target : ---->1000
--> Date : 2009-12-11 17:07:02
--> Version: SQL Server 2005
---------------------------------------------

--> 测试数据: @tb
create table #tb(id varchar(10))

declare @str varchar(20),@s varchar(4000)
set @str='1@2@3@4'


set @s ='select '+ replace(@str,'@',' union all select ')

insert #tb exec(@s)

------------------------------------
select * from #tb

id
----------
1
2
3
4

(4 行受影响)

drop table #tb
nianran520 2009-12-11
  • 打赏
  • 举报
回复
create procedure [up_test] 
(
@str varchar(1000) ---传入@str = '1@2@3@4@5'
)
AS
--------------我需要把@str以'@'分割,然后循环插入tb表里的a字段

begin
select @str = 'insert into tb(a) select '''+replace(@str,'@',''' union all select ''')+''
exec(@str)

end
nianran520 2009-12-11
  • 打赏
  • 举报
回复
create procedure [up_test] 
(
@str varchar(1000) ---传入@str = '1@2@3@4@5'
)
AS
--------------我需要把@str以'@'分割,然后循环插入tb表里的a字段

begin
select @str = 'insert into tb(a) select '''+replace(@str,'@',''' union all select ''')+''
exec(@str)

end
zhengshaodong 2009-12-11
  • 打赏
  • 举报
回复
哦 忘记还有一个参数的话
@code
@str

要把@str分割后的值和@code(每次插入@code都一样的)循环这样插入表A
--小F-- 2009-12-11
  • 打赏
  • 举报
回复
declare @str varchar(8000) 

set @str = '1@2@3@4@5'

set @str = 'select name='''+replace(@str,'@',''''+' union all select ''')+''''

exec(@str)
/*name
----
1
2
3
4
5

(5 行受影响)*/

34,575

社区成员

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

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