0

TO_DATE 関数を含む文字列があります。この TO_DATE 呼び出しを SYSDATE に置き換えたいと思います。

たとえば、私の文字列は基本的にSQLの挿入または更新なので、次のようなものがあります

INSERT INTO table_a (col_a, col_b, col_c, updt_dt) VALUES ('A', 'B', 'C', to_date('2012-06-11 22:10:44', 'YYYY-MM-DD HH24:MI:SS'));

TO_DATE 呼び出しを次のように置き換えます。

INSERT INTO table_a (col_a, col_b, col_c, updt_dt) VALUES ('A', 'B', 'C', SYSDATE);

この挿入ステートメント全体が 1 つのデータベース フィールドにあることに注意してください。regexp_replaceでは、 TO_DATE 呼び出しを SYSDATE に置き換えるにはどうすればよいでしょうか。

Oracle 10gR2 を実行しています。

4

3 に答える 3

1

sedLinux での使用:

sed -e "s/to_date([A-Za-z0-9:' ,-]\+)/sysdate/g" <<< "INSERT INTO table_a (col_a, col_b, col_c, updt_dt) VALUES ('A', 'B', 'C', to_date('2012-06-11 22:10:44', 'YYYY-MM-DD HH24:MI:SS'));"

Linux を使用していない場合、検索/置換正規表現は次のとおりです。

s/to_date([A-Za-z0-9:' ,-]+)/sysdate/g

エディターが使用するほとんどの正規表現エンジンと互換性があるはずです

于 2012-06-12T03:54:08.530 に答える
1

文字列に含まれる to_date 関数が 1 つだけで、to_date 関数が常に同じ長さである場合、instr を使用して to_date が最初に出現する位置を取得できます。

あなたの声明は大まかに次のようになります。

update ... set field = substr(field, 1, instr(..)-1) || || 'システム日付' || substr(field, instr(..)+99) ここで ..

于 2012-06-12T08:37:34.193 に答える