在条件中,使用substr

时间:2016-12-14 18:51:02

标签: sql oracle11g excel-2010

我想从列中获取所有数据,但我的源代码只会向我提供有关同一列的部分信息,例如我的源代码将为我提供以下数据(未插入数据库,excel文件) :

Id_Source
----------------
ABC
A1B
B23
CGT
TGR
FRT

我的oracle表信息如下所示:

Id
----------------
ABC__120116
A1B__130115
B23__123534
CGT__125347
TGR__456873
FRT__124652

我尝试使用substr函数来做,但它似乎没有用,这是我到目前为止。

select id
from Tbl1
where
id in (substr('ABC',1,3));

我也尝试使用OR条件,但是我有数千条记录,搜索时间太长。

 select id 
from tbl1
where
and (
transaction_id like 'ABC%' or
transaction_id like 'A1B%' or
transaction_id like 'B23%');

有没有办法通过子字符串或任何其他方式获得有条件的搜索更快?

1 个答案:

答案 0 :(得分:1)

你在找这个吗?

where substr(transaction_id, 1, 3) in ('ABC', 'A1B', 'B23', 'CGT', 'TGR', 'FRT')

使用基于函数的索引可以更快地工作:

create index idx_t_transaction_id on t(substr(transaction_id, 1, 3));