1

我有一个数据库列report_name,它的值类似于这个

000007091_PaymentRegisterReport _D x3A 975844_2012-12-26.XLS

我需要删除所有带有 XLS 扩展名的 PaymentRegisterReport 中 _D 之前的空格。有人可以帮助我使用正则表达式在更新语句中使用内部 regexp_replace 函数吗?

4

3 回答 3

13

您真的需要正则表达式来更新数据吗?请检查查询。

update TableName
set report_name=REPLACE(report_name, ' _D' , '_D')
WHERE report_name LIKE '%PaymentRegisterReport %' AND 
  report_name LIKE '%.XLS';
于 2013-01-10T09:36:39.720 回答
3

您需要使用的表达式是

REGEXP_REPLACE(f1, '(.*)(_PaymentRegisterReport) _D (.*)(\.XLS)$', '\1\2_D\3\4')

我假设您可以通过“PaymentRegisterReport”识别报告类型,并且文件扩展名将是大写的

于 2013-01-10T09:39:50.847 回答
2

您可以将“_D”bi“_D”替换为上述techdo的选择。

但是我按照您的要求写了一个 regex_replace :

select regexp_replace('000007091_PaymentRegisterReport _D x3A 975844_2012-12-26.XLS','^(.*) _D(.*).XLS$','\1_D\2.XLS') from dual;
于 2013-01-10T09:41:03.090 回答