2010-06-20 1 views
2

У меня есть две таблицы в моей базе данных, первая содержит несколько предложений, таких как «Мне нравятся яблоки и бананы», второй содержит ключевое слово, например «apple» & «orange». Я хочу создать инструкции sql или usp, чтобы перечислить все colomns в 1-й таблице с ключевыми словами во втором. Как я могу достичь этого без использования курсоров?Как избежать курсора в sql-сервере? также хочу избежать while loop

У кого-нибудь есть умные идеи, а не цикл? Это будет здорово.

Спасибо, Ling

ответ

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 
Смежные вопросы