首页 新闻 会员 周边

如何查询指定标签ID的文章列表

0
悬赏园豆:10 [待解决问题]
有一个文章表,有两个字段,articleinfo ( aid int, tids varchar(100)) aid为文章ID,tids为标签ID字符串,一篇文章对应多个标签ID,tids保存的格式为"1,2,3,11,12,13"  (不包括双引号),如何查询标签为@tagId(整形,如1)的文章列表呢。
PS:最好是已经测试过的
sql
清流鱼的主页 清流鱼 | 初学一级 | 园豆:179
提问于:2012-04-24 12:22
< >
分享
所有回答(2)
0

是指查询一行数据么?

 

 你的意思是这样么  select  * from articleinfo where tids=@tagid;

┢┦偉 | 园豆:1240 (小虾三级) | 2012-04-24 12:55

tids=@tagid 这样明显不行的,@tagId为整形,即使转换成字符型,'1,2,3' = '1',也永远得不到正确的结果吧

支持(0) 反对(0) 清流鱼 | 园豆:179 (初学一级) | 2012-04-24 13:23
0

通过模糊查询找到啊,可以用like,或者用charindex,如:

like:  select * from articleinfo where tids like '%1%'

charindex: select * from articleinfo where charindex('1',tids)>0

条件中最好这样写:charindex(',1,',','+tids+',')  可以避免出现重复字符的问题

KivenRo | 园豆:1734 (小虾三级) | 2012-04-24 13:04

若是tagids = '11,12,13',模糊查询就会出问题。

PS:题目给的示例有误导,又补充了一点

支持(0) 反对(0) 清流鱼 | 园豆:179 (初学一级) | 2012-04-24 13:28

所以说让在模糊查询的编号或ID的两边加上逗号,将它们作为一个条件进行查询,这样就确保了不会出现重复的编号或ID:

如:tagids = '1,2,3,11,12,13'    查ID为11的或1的文章:

条件 :where  ',' + tids + ','  like  '%,1,%'  (或者用上面charindex的方法也行)

除了这个问题,还有其它什么问题吗

支持(0) 反对(0) KivenRo | 园豆:1734 (小虾三级) | 2012-04-24 14:59

@白雲天: 明白了,十分感谢,暂无其他问题的

支持(0) 反对(0) 清流鱼 | 园豆:179 (初学一级) | 2012-04-24 20:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册