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

Art*_*tic 14 sql oracle plsql contains oracle10g

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

ros*_*533 17

Contains用于具有"CONTEXT索引"的文本字段,该索引将文本字段编入索引以进行搜索.标准用法是这样的(使用score运算符显示contains基于contains匹配1 的1中的子句返回的内容score):

SELECT score(1), value
FROM table_name
WHERE CONTAINS(textField, 'searchString', 1) > 0;
Run Code Online (Sandbox Code Playgroud)

对于这样的数据在表中 table_name

value  |  textField
-------|-----------------------------------------------
A      |   'Here is searchString.  searchString again.'
B      |   'Another string'
C      |   'Just one searchString'
Run Code Online (Sandbox Code Playgroud)

该查询将返回

2 A
1 C
Run Code Online (Sandbox Code Playgroud)

所以包含类似,但会计算字符串在文本字段中出现的次数.我无法使用包含它在您发布的查询中使用它的方式找到资源,但我认为这将返回dFullText至少包含一个实例的行car,或者等效于此sql的行:

Select * from blabla where dFullText like "%car%"
Run Code Online (Sandbox Code Playgroud)

是另一个来源.

  • @Rene,是的,它们是不同的。`Contains()` 计算字符串在文本字段中出现的次数并返回该数字。`instr()` 在字段(或其他字符串)中搜索字符串并返回找到的第一个搜索字符串的索引(如果未找到,则返回 0)。请参阅 http://www.techonthenet.com/oracle/functions/instr.php 上的 `instr()` 示例 (2认同)