文章数据表 (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)+ '| ', '| '[email protected]+ '| ')> 0
drop table tb
---结果:
/*
ID CgyID
----------- -----------
2 2
3 8
5 4
6 2
*/