PL-SQL中的contains()如何工作?

时间:2010-03-12 07:11:30

标签: sql oracle plsql oracle10g contains

在我的查询中使用contains()方法有很多不必要的结果。不要告诉我使用喜欢或其他东西。它是硬编码的,无法更改。

2 个答案:

答案 0 :(得分:16)

包含用于具有“上下文索引”的文本字段,该索引将文本字段编入索引以进行搜索。标准用法是这样的(使用score运算符显示contains子句中基于contains中与score中的1匹配的1)返回的内容:< / p>

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%"

Here是另一个来源。

答案 1 :(得分:0)

请参阅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;