2016-12-14 6 views
0

Я хочу получить все данные из столбца, но мой источник предоставит мне часть информации только в том же столбце, например, мой источник предоставит мне следующие данные (не вставлен на DB, Excel файл):In Условие, используя substr

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

И мой оракул стол информации выглядит следующим образом:

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)); 

Я также пробовал его с условным условием ИЛИ, который работает, но у меня есть тысячи записей, и поиск занимает слишком много времени.

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

Есть ли способ получить условное выражение подстрокой или любым другим способом ускорить поиск?

+0

эти 2 разные таблицы? или один из них не в db? –

+0

Id_source не находится в БД, его файл excel – Zombraz

+0

был бы простым запросом, если бы вы могли импортировать excel в виде таблицы в базу данных. –

ответ

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)); 
+0

Да, это работает! Спасибо! – Zombraz

+0

Но по-прежнему требуется слишком много времени для отправки результатов, а идентификатор столбца индексируется. – Zombraz

Смежные вопросы