首页 > 代码库 > 游标后面select 带有in时
游标后面select 带有in时
今天遇到一个问题,使用游标时,在给游标填充值的时候,select 语句中带有 where查询条件,并且还有 in子句。
本来我是这样写的,试了很多次都不出结果,当然number in (304010,305013)是可以出结果的。
declare @Did varchar(10)declare @zdcode varchar(50) set @zdcode=‘304010,305013‘declare cur_id cursor for select Number from dbo.IM_Metadata where number in (@zdcode) open cur_id fetch next from cur_id into @Didwhile @@fetch_status=0 begin print @Didfetch next from cur_id into @Didendclose cur_id deallocate cur_id
后来一番折腾,求助了群里同志们
果然有了不错的解决方案
就是添加一个函数:
CREATE FUNCTION [dbo].[f_split] ( @c VARCHAR(MAX) , @split VARCHAR(50) ) RETURNS @t TABLE ( col VARCHAR(50) ) AS BEGIN WHILE ( CHARINDEX(@split, @c) <> 0 ) BEGIN INSERT @t( col ) VALUES ( SUBSTRING(@c, 1, CHARINDEX(@split, @c) - 1) ) SET @c = STUFF(@c, 1, CHARINDEX(@split, @c), ‘‘) END INSERT @t( col ) VALUES ( @c ) RETURN END
然后使用时这样:
declare cur_id cursor for select Number from dbo.IM_Metadata where number in (select * from f_split(@zdcode , ‘,‘))
ok问题解决了。
游标后面select 带有in时
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。