实现MS SQL存储过程中传入的“,”分隔字符串的(in)操作
2008-08-27 17:25
267 查看
传入的@items值是(2,3,5,8,)这种类型
/*显示选中的商铺的资讯列表*/
CREATE procedure select_NewListByshopId
@flag int,
@keyword Varchar(50),
@sDate DateTime,
@items varchar(100)
as
declare @split varchar(1)
set @split=','
declare @T_Module table(m varchar(4000))
while charindex(rtrim(@split),@items) <>0
begin
set @items=ltrim(rtrim(@items))
if(substring(@items,1,1) <>@split)
begin
insert into @T_Module (m) values(substring(@items,1,charindex(@split,@items)-1))
set @items =stuff(@items,1,charindex(@split,@items),'')
end
else
begin
set @items=stuff(@items,1,1,'')
end
end
if rtrim(@items) <>''
insert into @T_Module (m) values (@items)
select a.ID,a.sort,a.Title,a.ByUrl,a.Url,a.Target,a.Content,
a.AddTime,a.AddUser,b.MemName,c.StoreName,c.SysTemClass
from db_Announce as a
Left Join db_Member as b on a.AddUser = b.Id
LEFT JOIN db_Store as c on a.AddUser= c.UserID
where 1=1 and a.IsAttest = ( case when @flag=1 then 1 when @flag=0 then 0 end)
AND c.ID IN (select m from @T_Module)
AND convert(datetime, cast(year(a.AddTime) as varchar(4)) + '-' + cast(month(a.AddTime) as varchar(2)) + '-' + cast(day(a.AddTime) as varchar(2)), 110)
= ( case when @sDate<>" " then @sDate
else convert(datetime, cast(year(a.AddTime) as varchar(4)) + '-' + cast(month(a.AddTime) as varchar(2)) + '-' + cast(day(a.AddTime) as varchar(2)), 110) end )
AND a.Title LIKE '%'+@keyword +'%'
order by a.sort asc , a.ID ASC
GO
/*显示选中的商铺的资讯列表*/
CREATE procedure select_NewListByshopId
@flag int,
@keyword Varchar(50),
@sDate DateTime,
@items varchar(100)
as
declare @split varchar(1)
set @split=','
declare @T_Module table(m varchar(4000))
while charindex(rtrim(@split),@items) <>0
begin
set @items=ltrim(rtrim(@items))
if(substring(@items,1,1) <>@split)
begin
insert into @T_Module (m) values(substring(@items,1,charindex(@split,@items)-1))
set @items =stuff(@items,1,charindex(@split,@items),'')
end
else
begin
set @items=stuff(@items,1,1,'')
end
end
if rtrim(@items) <>''
insert into @T_Module (m) values (@items)
select a.ID,a.sort,a.Title,a.ByUrl,a.Url,a.Target,a.Content,
a.AddTime,a.AddUser,b.MemName,c.StoreName,c.SysTemClass
from db_Announce as a
Left Join db_Member as b on a.AddUser = b.Id
LEFT JOIN db_Store as c on a.AddUser= c.UserID
where 1=1 and a.IsAttest = ( case when @flag=1 then 1 when @flag=0 then 0 end)
AND c.ID IN (select m from @T_Module)
AND convert(datetime, cast(year(a.AddTime) as varchar(4)) + '-' + cast(month(a.AddTime) as varchar(2)) + '-' + cast(day(a.AddTime) as varchar(2)), 110)
= ( case when @sDate<>" " then @sDate
else convert(datetime, cast(year(a.AddTime) as varchar(4)) + '-' + cast(month(a.AddTime) as varchar(2)) + '-' + cast(day(a.AddTime) as varchar(2)), 110) end )
AND a.Title LIKE '%'+@keyword +'%'
order by a.sort asc , a.ID ASC
GO
相关文章推荐
- 在存储过程中如何实现将id列表字符串传入in()
- oracle处理传入的是字符串的数字,通过传入的字符串数字执行IN操作
- SQL巧用逗号分隔的字符串实现类似于 where field in (a,b,c,d)的查询
- 在存储过程中如何实现将id列表字符串传入in()
- 用一个函数实现将一行字符串中最短的单词输出。此行字符串从主函数传递给该函数。假设字符串中包含的单词以空格作为分隔符号,例如”Asia Games 2010 is held in GuangZhou.”,其中最短的单词是”is”和”in”。
- PHP3.2中Model层的in操作的实现,特别针对字符串的操作
- C#类实现字符串的公共操作二——字符串过滤
- <2012 12 17> C标准库中一些字符串操作函数的实现
- C语言字符串的常见特殊操作(除了string.c实现的那些接口)
- 字符串(堆分配存储)11种操作的实现
- JS编写一个函数,实现传入一个不定长度字符串,查找出重复次数前n名的字符并分别统计其次数
- oracle 拆分逗号分隔字符串 实现split
- C字符串操作函数实现
- django自定义Field实现一个字段存储以逗号分隔的字符串
- 字符串常用操作的实现
- C语言实现字符串操作函数的实例
- oracle拆分逗号分隔字符串 实现split
- 一些字符串操作函数的模拟实现
- 底层实现的字符串操作函数
- c中利用字符串操作实现用户自己输入文件名