Не пренебрегайте тестированием целевого шаблона во всех возможных позициях в строке, в том числе вообще не там. Всегда ожидайте неожиданного! Этот метод использует 3 группы захвата. Первая — это начало строки или всех символов, за которыми следует пробел перед второй группой. Вторая группа состоит из одного или нескольких словесных символов (az, A-Z, 0-9, включая символ подчеркивания _), за которыми следует 'as'. Третья группа захвата — остальная часть линии.
Это заменено 1-й и 3-й группами захвата, эффективно удаляющими слово перед и включая «как». Начинается с позиции 1, делает это для всех вхождений, игнорируя регистр.
SQL> with tbl(id, str) as (
select 1, 'run_id, src_key, cd_key, ml_orig as cde_value, date_key, desc' from dual union all
select 2, 'ml_orig as cde_value, run_id, src_key, cd_key, date_key, desc' from dual union all
select 3, 'run_id, src_key, cd_key, date_key, desc, ml_orig as cde_value' from dual union all
select 4, 'run_id, src_key, cd_key, date_key, desc, ml_orig as cde_value' from dual union all
select 5, 'ml_oria as run_id, ml_orib as src_key, ml_oric as desc, ml_orid as cde_value' from dual union all
select 6, NULL from dual union all
select 7, 'run_id,ml_orig as src_key, cd_key, date_key, desc, ml_orig as cde_value' from dual
)
select id, regexp_replace(str, '(^|.*?, *)(\w+ +as +)(.*)', '\1\3', 1, 0, 'i') fixed
from tbl;
ID FIXED
---------- --------------------------------------------------
1 run_id, src_key, cd_key, cde_value, date_key, desc
2 cde_value, run_id, src_key, cd_key, date_key, desc
3 run_id, src_key, cd_key, date_key, desc, cde_value
4 run_id, src_key, cd_key, date_key, desc, cde_value
5 run_id, src_key, desc, cde_value
6
7 run_id,src_key, cd_key, date_key, desc, cde_value
7 rows selected.
SQL>
person
Gary_W
schedule
05.12.2018