0
すばやくチェックしてください。すべての出現を1つのselect文で置き換えることは可能ですか?もしそうでなければ、この置換を行う関数を書くつもりです。Oracle:複数の文字列の置換を置き換えます。
サンプル列
select '#col1:[email protected], #col2:[email protected], #col3:[email protected], #col4:[email protected], #col5:[email protected]' str from dual
の予想される出力
str
---
col1 val1, col2 val2, col3 val3, col4 val4, col5 val5
コードを、これまで
with test_table as
(Select '#col1:[email protected], #col2:[email protected], #col3:[email protected], #col4:[email protected], #col5:[email protected]' str from dual)
select level "occurrence", REGEXP_substr(str, '#(.*?):', 1, level, 'in', 1) "column", REGEXP_substr(str, ':(.*?)@', 1, level, 'in', 1) "value"
from test_table
CONNECT BY REGEXP_COUNT(str, '#.+?:[email protected]') >= level
追加詳細
- 文字列パターンは事前に固定されています。
- 与えられたパターンの出現は動的であり、[column:value]のペアをいくつでも持つことができます - 実際には[table column:alias]が設定されています。
- 私は簡単にするためにサンプル文字列をトリムしましたが、追加の詳細(テーブルジョイン、where節など)が含まれているため、すべてのオカレンスを置き換える必要があります。これは実際にはselectステートメントです。