1

これに似た値を持つdb列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 のように select に置き換えることができます。

しかし、あなたが求めていたように、私は 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 に答える