Получите много ненужных результатов, используя метод contains() в моем запросе. Не говори мне, что я использую что-то еще. Он жестко запрограммирован и не может быть изменен.
Как работает() в PL-SQL?
Ответ 1
Содержит используется в текстовых полях с индексом CONTEXT, который индексирует текстовое поле для поиска. Стандартное использование аналогично (с помощью оператора score
для отображения того, что возвращается из предложения contains
на основе 1 в contains
, соответствующего 1 в score
):
SELECT score(1), value
FROM table_name
WHERE CONTAINS(textField, 'searchString', 1) > 0;
Для данных, подобных этому в таблице table_name
value | textField
-------|-----------------------------------------------
A | 'Here is searchString. searchString again.'
B | 'Another string'
C | 'Just one searchString'
Этот запрос вернет
2 A
1 C
Таким образом, содержит аналогично, но будет подсчитывать, сколько раз строка появляется в текстовом поле. Я не мог найти ресурс, используя Содержит, как он используется в запросе, который вы отправили, но я думаю, что он вернет строки, где dFullText
имеет по крайней мере один экземпляр car
в нем или эквивалент этого sql:
Select * from blabla where dFullText like "%car%"
Здесь - еще один источник.
Ответ 2
См. этот пример из oracle.com
declare
rowno number := 0;
begin
for c1 in (SELECT SCORE(1) score, title FROM news
WHERE CONTAINS(text, 'oracle', 1) > 0
ORDER BY SCORE(1) DESC)
loop
rowno := rowno + 1;
dbms_output.put_line(c1.title||': '||c1.score);
exit when rowno = 10;
end loop;
end;