oracle - 在 Oracle 中使用索引反转字符串

我有一个包含 ID 和字符串的表,我需要能够正确地建立索引以搜索字符串的末尾。我们目前的处理方式是将信息复制到另一个表中,然后反转每个字符串并正常对其进行索引。我想做的是使用某种允许反向搜索的索引。

例子

Data: 
F7421kFSD1234 
d7421kFSD1235 
F7541kFSD1236 
d7421kFSD1234
F7421kFSD1235 
b8765kFSD1235 
d7421kFSD1234

我们的用户通常输入搜索的方式类似于...

*1234

通过反转字符串(和搜索字符串:4321*),我无需完全扫描整个表即可找到我要查找的内容。我的问题是:做第二张 table 是最好的方法吗?

有没有办法反向索引? 我试过这样的索引......

create index REVERSE_STR_IDX on TABLE(STRING) REVERSE;

但 oracle 似乎没有按照解释计划使用它。

在此先感谢您的帮助。


更新:

我确实遇到了没有正确反转 unicode 字符的问题。解决这个问题的方法是类型转换它们。

例子:

select REVERSE(cast(string AS varchar2(2000)))
from tbl 
where id = 1

最佳答案

有一种说法是反向键索引可以用于此目的,但是,我从未见过实际应用。

我会尝试基于“手动”函数的索引。

CREATE INDEX REVERSE_STR_IDX on TBL(reverse(string));

SELECT *
  FROM TBL
 WHERE reverse(string) LIKE '4321%';

https://stackoverflow.com/questions/6751460/

相关文章:

css - float : left; Not working in IE?

sql-server - 用于生成序列号的 SQL Server 函数

php - 需要 return ($a > $b) 的解释吗? -1 : 1 in php

java - 为什么我们不能将实例变量传递给父类(super class)构造函数?

iphone - UITableView 中图像的圆角矩形/圆角

php - 使用php获取字符串的一部分

visual-studio - Visual Studio : Debugging Chrome w

asp.net - CS0433 : The type 'CrystalDecisions.Web.

jquery - 你如何使用 jquery 将一个下拉列表的选项复制到另一个下拉列表

qt - 如何解决(不兼容的发送方/接收方参数)问题?