如何在sql server中避免游标?也想避免while循环

时间:2010-06-20 06:59:27

标签: sql database loops

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

有人会有一些聪明的想法而不是循环吗?那太棒了。

谢谢, 灵

1 个答案:

答案 0 :(得分: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