私はPLSQLコードを持っています。30行のテーブルからデータを取り出します。そのうちの10カラムは長さ3の区切り文字です。これらの10カラムのフィールド数に基づいて1行を複数の行に変換する必要があります。デリミタの長さで値を分割する3 '|||'
私はすべてのデータを1つの一時テーブルにロードしています。一時テーブルでは、データを分割して複数の行をメインテーブルに挿入するカーソルを呼び出しています。
カーソルの内側regexp_substr
を使用して値を分割し、私が使用する正規表現は[^\\|]+{3}
です。分割後に実際の値が得られません。テストケースのために使用さ
サンプル・データは、私が
100, 200||300 , 400 , |0
以下のような値を取得する必要があります分割した後
100|||200||300|||400||||0
あるしかし、私は取得していますが
100 , 200, 300 ,400, 0
でいずれもお勧めできます私はそれを行う適切な方法ですか?
返信待ち! ありがとう
あなたは100が必要です|| 20 ||| 300 ||| 400〜 100-1行 200-2行 300-3行? –
宣言 カーソルcdrはselect * from TEMP_TABLEです。 は0..regexp_countに私のために、CDRループ に(b_new.CHARGE、 '[〜]')MAIN_TABLEにループ 挿入(COL1、COL2、COL3等...) 値(REGEXP_SUBSTR(b_newをb_newため を開始します。 1、i)、 '0')、b_new.col2、regexp_substr(b_new.col3、 '[^〜] +'、1、i)など); エンドループ。 エンドループ。 end; 上記のコードは、デリミタの長さ= 1でうまく動作します。デリミタとして? –
3列のサンプルテーブル A B C 1 2 || 2 3。 出力が必要です 1 2 3 - 行1と 1 2 3 - 行2 –