Korzystanie z regexp_replace w aktualizacji


Mam kolumnę db report_name, która będzie miała takie wartości
000007091_PaymentRegisterReport _D x3A 975844_2012-12-26.XLS

Muszę usunąć spację przed _D we wszystkich PaymentRegisterReport z rozszerzeniem XLS.
Czy ktoś może mi pomóc z wyrażeniem regularnym używanym w funkcji regexp_replace w instrukcji aktualizacji?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Czy naprawdę potrzebujesz wyrażenia regularnego, aby zaktualizować dane? Sprawdź swoją prośbę.
update TableName
set report_name=REPLACE(report_name, ' _D' , '_D')
WHERE report_name LIKE '%PaymentRegisterReport %' AND
report_name LIKE '%.XLS';
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Musisz użyć wyrażenia
REGEXP_REPLACE(f1, '(.*)(_PaymentRegisterReport) _D (.*)(\.XLS)$', '\1\2_D\3\4')

Zakładam, że możesz określić typ raportu za pomocą „PaymentRegisterReport”, a rozszerzenia plików będą pisane wielkimi literami
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Możesz zamienić "_D" bi "_D" na select, jak powiedział techdo.
Ale napisałem regex_replace, jak pytałeś:
select regexp_replace('000007091_PaymentRegisterReport _D x3A 975844_2012-12-26.XLS','^(.*) _D(.*).XLS$','\1_D\2.XLS') from dual;

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się