SQL SERVER “数组参数”

 

Posted on 2007-06-26 12:40 semye 阅读(1020) 评论(2)   编辑 收藏 网摘 所属分类: 业余练习


写过程时碰到这么一个问题,需要在库里处理N条数据,不想在程序里循环造成多次访问数据库
而SQL Sever又不支持数组参数,尝试了两种方法,在此做笔记如下(省略了单条数据的处理,用#temp是为了显示结果)
1.利用replace

create table #temp
(
ss varchar(
200 ) not  null
)
declare @str varchar(
200 )
declare @result varchar(
1000 )
set  @str = ' aaa,bb,c,d,e,ffffff '
set  @result  = '  insert into #temp(ss) select  ''' + replace(@str, ' , ' , ''' union select ''' ) + ''''
exec(@result)
select 
*  from #temp

2.利用charindex和substring

create table #temp
(
ss varchar(
200 ) not  null
)
declare @str varchar(
200 )
declare @curr 
int
declare @prev 
int
set  @str = ' aaa,bb,c,d,e,ffffff '
set  @curr = 1
set  @prev = 1
while   @prev  <  len(@str)
begin
set  @curr = charindex( ' , ' ,@str,@prev)
if  @curr > @prev
insert #temp select substring(@str,@prev,@curr
- @prev)   
else
begin
insert  #temp select substring(@str,@prev,len(@str)
- @prev + 1 )
break
end
set  @prev = @curr + 1
end
select 
*  from #temp
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值