繁体   English   中英

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

[英]How does contains() in PL-SQL work?

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

包含用于具有“CONTEXT 索引”的文本字段,该索引可索引用于搜索的文本字段。 标准用法是这样的(使用score运算符根据 1 in contains匹配 1 in score来显示从contains子句返回的contains ):

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; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM