请问查找与多个字符串相似的新闻标题,要怎么写存储过程?

eteok 2007-07-15 08:55:50
比如我现在有多个字符串,用逗号隔开
如“伊拉克,奥运会,中国,CSDN专家门诊”
新闻表有(ID,Title ,........)
要在表中查Title标题中出现了上面字符串中任意一段的记录找出来。

写存储过程要怎么写呢?
是不时要用循环语句,把字符串先按逗号分割,存储到数组里,然后再循环一个一个匹配哦?
...全文
228 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
肥胖的柠檬 2007-07-16
  • 打赏
  • 举报
回复
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)
eteok 2007-07-16
  • 打赏
  • 举报
回复
自顶一下!能给个具体例子最好!
hillhx 2007-07-16
  • 打赏
  • 举报
回复
建议你先用循环拆分开放到临时表中,然后一个一个的找,这样IO能小一些,如果用LIKE一起找IO可能太大
如果从程序结构考虑,你也可以做一个函数,这个函数两个参数,就是传如一个标题和你要匹配的串,返回0 和1 就可以,这样如果你用这个逻辑用的地方很多,日后修改起来比较简单
eteok 2007-07-16
  • 打赏
  • 举报
回复
自己搞定啦,节贴!!
才想到把它拆分成多个or like !!

declare @str varchar(100)
declare @tmpstr varchar(100)
declare @i int
declare @sql varchar(1000)
set @sql=''
set @str='别克,奥运会,中国,CSDN专家门诊'
while charindex(',',@str)>0
begin
set @i= charindex(',',@str)
if @i>0
begin
if @sql=''
begin
set @sql=@sql+'title like ''%'+substring(@str,1,@i-1)+'%'' '
end else
begin
set @sql=@sql+'or title like ''%'+substring(@str,1,@i-1)+'%'' '
end
set @str=substring(@str,@i+1,len(@str)-@i)
end
end
if @str<>''
begin
if @sql=''
begin
set @sql=@sql+'title like ''%'+@str+'%'' '
end else
begin
set @sql=@sql+'or title like ''%'+@str+'%'' '
end
end
select @sql = 'select top 20 * from news where '+ @sql +'order by id desc'
exec(@sql)
hellowork 2007-07-15
  • 打赏
  • 举报
回复
declare @list varchar(1000)
set @list = '伊拉克,奥运会,中国,CSDN专家门诊'
select * from table where charindex(',' + Title + ',',',' + @list + ',') > 0

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧