tsql字符串分割问题

问题如下:

某一个存储过程,过程体是:select * from atable where afield in(@str)

在外面调用的格式是:exec dbo.proc1 'a,b,c'

实现代码如下:

 

代码
 
   
if object_id ( ' dbo.fn_split ' ) is not null drop function dbo.fn_split
go
create function dbo.fn_split
(
@inputstr varchar ( 8000 ),
@seprator varchar ( 10 )
)
returns @temp table (a varchar ( 200 ))
as
begin
declare @i int
set @inputstr = rtrim ( ltrim ( @inputstr ))
set @i = charindex ( @seprator , @inputstr )
while @i >= 1
begin
insert @temp values ( left ( @inputstr , @i - 1 ))
set @inputstr = substring ( @inputstr , @i + 1 , len ( @inputstr ) - @i )
set @i = charindex ( @seprator , @inputstr )
end
if @inputstr <> ' \ '
insert @temp values ( @inputstr )
return
end
go
alter PROCEDURE dbo.Myproc1
@str nvarchar ( 100 )
as
begin
select id,name from dbo.customer where name in ( select * from dbo.fn_split( @str , ' , ' ))
end

exec dbo.Myproc1 ' 吉之岛,北京家乐福 '

 

 

转载于:https://www.cnblogs.com/cnbwang/archive/2010/12/18/1909787.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值