这个问题比较难,假设用户给定一个参数变量 @categoryId , 要的到属于该categoryId 的所有文章。
文章数据表 (article), 其中有一个字段categoryId 是varchar 类型,存放多个文章分类的ID,代表这篇文章属于多个分类。
下面是一个SQL存储过程, 假设用户给定一个参数变量 @categoryId , 要的到属于该categoryId 的所有文章。
declare @categoryId varchar(2000)
set @categoryId = '2|8|45|78|4|23 ' -- 这个存放的都是分类的ID
要得到所有属于该分类的文章,怎么写SQL ??
是不是要用 WHILE 循环
[解决办法]
---测试数据
declare @categoryId varchar(2000)
set @categoryId = '2|8|45|78|4|23 '
create table tb(ID int,CgyID int)
insert tb select 1,1
union all select 2,2
union all select 3,8
union all select 4,7
union all select 5,4
union all select 6,2
select * from tb where charindex( '| '+cast(CgyID as varchar)+ '| ', '| '+@categoryId+ '| ')> 0
drop table tb
---结果:
/*
ID CgyID
----------- -----------
2 2
3 8
5 4
6 2
*/