如何在不区分大小写的索引中搜索区分大小写

时间:2014-10-16 11:34:19

标签: sql oracle case-sensitive oracle-text

我必须查询存储在单独表中的超过100个单词(不区分大小写)。

Select a_id, text from xy
inner join keywords kw on contains(xy.text, kw.word)>0

这很好用。但现在我有一个必须查询区分大小写的关键字。

如果不创建区分大小写的索引并单独查询该关键字,有人知道如何做到这一点吗?是否可以忽略关键字,让我们说“我们”,并且只使用大写字母(“美国”)创建关键字索引。

我尝试将“我们”添加到停用词中,但它没有成功。

1 个答案:

答案 0 :(得分:0)

将列case_sensitive char(1) -- Y/N添加到keywords表,然后:

select a_id, text
from xy
join keywords kw on contains(xy.text, kw.word) > 0
  and (kw.case_sensitive = 'N' or instr(xy.text, kw.word) > 0)

索引仍将被使用,但对于区分大小写的关键字还有一个额外要求,即关键字必须在文本中逐字显示。