13 авг. 2011 г.

Применение SELECT FROM SELECT

Конструкция SELECT FROM SELECT замечательная вещь. Вот здесь приведено решение задачи поиска строк, содержащих все заданные слова в любой последовательности.

2 комментария:

igor6003 комментирует...

Вот ещё вариант выборки:
select t.s
from test t
where ' '||t.s||' ' containing ' blue ' and ' '||t.s||' ' containing ' house '

И для процедуры:
create procedure split_words (S varchar(1024))
returns (w varchar(256))
as
declare variable I integer;
declare variable J integer = 1;
declare variable s1 varchar(1024);
BEGIN
s1 = s || ' ';
while (j < char_length(s1)) do
begin
i = position(' ',:s1,j);
w = substring(:s1 from j for i-j);
j = i+1;
SUSPEND;
END
END

Andrei комментирует...

Ясно, что с CONTAINING можно решить. Но там было по условиям:

"Using several LIKE x AND LIKE y, is not the way to go because I don't know how many words will have to find."

Отправить комментарий