Исходные данные:
:str - исходная строка
:a - первый символ
:b - второй символ
Вариант 1, придуманный мной:
select substr(
:str,
instr(:str, :a,1,1)+length(:a),
instr(:str, :b,1,2)-instr(:str, :a,1,1)-length(:a)
) val
from dual;
Вариант 2, предложен моим коллегой, гораздо более краткий, но отчасти более непонятный:
select regexp_replace(:str, '(.*)\' || :a || '(.*)\' || :b || '(.*)', '\2') from dual
:str - исходная строка
:a - первый символ
:b - второй символ
Вариант 1, придуманный мной:
select substr(
:str,
instr(:str, :a,1,1)+length(:a),
instr(:str, :b,1,2)-instr(:str, :a,1,1)-length(:a)
) val
from dual;
Вариант 2, предложен моим коллегой, гораздо более краткий, но отчасти более непонятный:
select regexp_replace(:str, '(.*)\' || :a || '(.*)\' || :b || '(.*)', '\2') from dual
Этот комментарий был удален автором.
ОтветитьУдалить