Как работает contains () в PL-SQL?
есть много ненужных результатов, используя метод contains () в моем запросе. Не говори мне использовать что-то подобное. Это жестко и не может быть изменен.
2 ответов
Contains используется в текстовых полях с "индексом контекста", который индексирует текстовое поле для поиска. Стандартное использование выглядит так (используя 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%"
здесь другой источник.
посмотреть в этом примере от 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;