我有一个db列report_name,其值与此类似
000007091_PaymentRegisterReport _D x3A 975844_2012-12-26.XLS
我需要在所有具有XLS扩展名的PaymentRegisterReport中删除_D之前的空格。 有人可以帮我使用regex在update语句中使用regexp_replace函数吗?
答案 0 :(得分:10)
您真的需要正则表达式来更新数据吗?请检查查询。
update TableName
set report_name=REPLACE(report_name, ' _D' , '_D')
WHERE report_name LIKE '%PaymentRegisterReport %' AND
report_name LIKE '%.XLS';
答案 1 :(得分:2)
您需要使用的表达式是
REGEXP_REPLACE(f1, '(.*)(_PaymentRegisterReport) _D (.*)(\.XLS)$', '\1\2_D\3\4')
我假设您可以通过'PaymentRegisterReport'识别报告类型,文件扩展名将为大写
答案 2 :(得分:2)
您可以使用select替换“_D”bi“_D”作为所述技术。
但是我写了一个regex_replace,正如你所要求的那样:
select regexp_replace('000007091_PaymentRegisterReport _D x3A 975844_2012-12-26.XLS','^(.*) _D(.*).XLS$','\1_D\2.XLS') from dual;