2010-06-20 141 views
2

我在我的数据库中有两个表,第一个包含几个句子,如'我喜欢苹果和香蕉',第二个包含关键词,如'apple'&'orange'。我想创建一个sql语句或usp来列出第一个表中的所有列表和第二个列表中的关键字。如何在不使用游标的情况下实现这一目标?如何避免sql server中的游标?也想避免while循环

会有人有一些聪明的想法,而不是while循环?那会很棒。

感谢, 灵

回答

2

看看是否是你所需要的...

选项1将返回一行针对每个关键字短语匹配...

选项2点返回的CSV短语中的关键字。请注意,这使用SQL 2005相关函数。

我为你做了一个测试用例......也许会帮助你解释这个问题。

create table #test(id int identity(1,1), phrase varchar(1000)) 

create table #kenter code hereeyword(id int identity(1,1), keyword varchar(50)) 

insert into #test 
select 'I like apples and bananas' 

insert into #keyword 
select 'APPLE' 
UNION 
select 'BANANA' 
UNION 
select 'RASPBERY' 


select 
    t.*, 
    k.keyword 
from #test t 
    inner join #keyword k on t.phrase like '%' + k.keyword + '%' 

--OR... 


select 
    t.*, 
    Keywords = ( 
     select k.keyword + ',' as [text()] 
     from #keyword k 
     where t.phrase like '%' + k.keyword + '%' 
     FOR XML PATH('')) 
from #test t 



drop table #test 

drop table #keyword