Проблема:
select STR1 from T1 where STR2 = 'NAME1'
В приведенном выше запросе STR1 может иметь вид {ABC, ABC_1, ABC_2, ..., MNO, XYZ, XYZ_1 ...}.
Итак, предположим, что у меня есть следующий вывод
ABC_1
MNO
XYZ
Теперь я хочу извлечь все те соответствия STR1, которые включают деталь до _ # .Например, ожидаемый результат для вышеприведенного примера набора данных:
ABC
ABC_1
ABC_2
MNO
XYZ
XYZ_1
Обратите внимание, что STR2 всегда уникален для STR1.
В отношении кода я представляю что-то вроде следующего:
SELECT
STR1
FROM
T1
WHERE
STR1
LIKE '% (truncate_underscore_part(select STR1 from T1 where STR2 = 'NAME1')) %'
Есть идеи?
Первое решение:
select t1.str1
from (
select case when instr( str1, '_' ) > 0
then substr( str1, 1, instr( str1, '_' ) - 1 )
else str1
end prefix
from t1 where str2 = 'NAME1'
) prefix_list,
t1
where t1.str1 like prefix || '%'