Как работает contains () в PL-SQL? - PullRequest
13 голосов
/ 12 марта 2010

Получите много ненужных результатов, используя метод contains () в моем запросе Не говорите мне, чтобы использовать как или что-то еще. Это жестко и не может быть изменено.

Ответы [ 2 ]

16 голосов
/ 19 марта 2010

Содержит используется в текстовых полях, имеющих «Индекс КОНТЕКСТА», который индексирует текстовое поле для поиска. Стандартное использование выглядит следующим образом (используется оператор 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%"

Здесь - другой источник.

0 голосов
/ 12 марта 2010

См. Этот пример с 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; 
...