Oracle でカンマ区切りの文字列を複数行に分割します
カンマ区切りの文字列を複数の行に分割することは、Oracle Database における一般的なデータ前処理および分析タスクです。これを実現するには多くの方法がありますが、ここでは 1 つのシンプルで効果的な方法を見ていきます。
1 つの方法は、Oracle の正規表現を利用し、機能によって接続することです。次の表を考えてみましょう。各レコードにはカンマ区切りのエラーが含まれています:
名称 | 项目 | 错误 |
---|---|---|
108 | test | Err1, Err2, Err3 |
109 | test2 | Err1 |
私たちの目標は、各エラーを個別の行に抽出することです。その結果、次のようになります。
名称 | 项目 | 错误 |
---|---|---|
108 | test | Err1 |
108 | test | Err2 |
108 | test | Err3 |
109 | test2 | Err1 |
これを行うには、階層クエリと regexp_substr を使用して、エラーの発生数に基づいて各エラーを抽出します。次のクエリは、このアプローチを示しています:
<code class="language-sql">with temp as ( select 108 Name, 'test' Project, 'Err1, Err2, Err3' Error from dual union all select 109, 'test2', 'Err1' from dual ) select distinct t.name, t.project, trim(regexp_substr(t.error, '[^,]+', 1, levels.column_value)) as error from temp t, table(cast(multiset(select level from dual connect by level <= length(regexp_replace(t.error, '[^,]+')) + 1) as sys.OdciNumberList)) levels order by name</code>
このクエリは、カンマを使用して文字列の長さを置き換え (regexp_replace)、階層クエリ メカニズムを使用して一連の異なるレベルを作成します。各レベルは、エラーの発生数をカンマ区切りの文字列で表します。次に、regexp_substr 関数が発生回数に基づいてエラーを抽出し、最終的な結果セットには目的の出力が含まれます。
このメソッドは、Oracle 10g 以降でカンマ区切りの文字列を複数の行に分割する簡単かつ効率的な方法を提供します。 Oracle の強力な文字列操作機能と階層クエリ機能を利用して、必要なデータ変換を実現します。
以上がOracle でカンマ区切りの文字列を複数の行に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。