日期:2014-05-18  浏览次数:20484 次

请问查找与多个字符串相似的新闻标题,要怎么写存储过程?
比如我现在有多个字符串,用逗号隔开
如“伊拉克,奥运会,中国,CSDN专家门诊”
新闻表有(ID,Title   ,........)
要在表中查Title标题中出现了上面字符串中任意一段的记录找出来。

写存储过程要怎么写呢?
是不时要用循环语句,把字符串先按逗号分割,存储到数组里,然后再循环一个一个匹配哦?

------解决方案--------------------
declare @list varchar(1000)
set @list = '伊拉克,奥运会,中国,CSDN专家门诊 '
select * from table where charindex( ', ' + Title + ', ', ', ' + @list + ', ') > 0
------解决方案--------------------
建议你先用循环拆分开放到临时表中,然后一个一个的找,这样IO能小一些,如果用LIKE一起找IO可能太大
如果从程序结构考虑,你也可以做一个函数,这个函数两个参数,就是传如一个标题和你要匹配的串,返回0 和1 就可以,这样如果你用这个逻辑用的地方很多,日后修改起来比较简单
------解决方案--------------------
hellowork(一两清风)的以可以了

但如果你想放在一个表里也可以这样
declare @str varchar(200)
set @str= '伊拉克,奥运会,中国,CSDN专家门诊 '
Select Top 1000 ID = Identity(Int, 1, 1) Into #T From Syscolumns A, Syscolumns B

--Insert table1
Select '1 ', Substring(@str, B.ID, CharIndex( ', ', @str+ ', ', B.ID) - B.ID)
From #T B
Where Substring( ', ' + @str, B.id, 1) = ', '

Drop Table #T



declare @str varchar(200)
set @str= '伊拉克,奥运会,中国,CSDN专家门诊 '


select @str= 'select ' ' '+replace(@str, ', ', ' ' ' as st union all select ' ' ')+ ' ' ' '

exec(@str)