ホームページ > データベース > mysql チュートリアル > Oracle でカンマ区切りの文字列を複数の行に分割するにはどうすればよいですか?

Oracle でカンマ区切りの文字列を複数の行に分割するにはどうすればよいですか?

DDD
リリース: 2025-01-22 17:47:09
オリジナル
103 人が閲覧しました

How to Split a Comma-Delimited String into Multiple Rows in Oracle?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート