我有一个包含 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 中图像的圆角矩形/圆角
visual-studio - Visual Studio : Debugging Chrome w
asp.net - CS0433 : The type 'CrystalDecisions.Web.