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

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

Barbara Streisand
リリース: 2025-01-22 17:36:15
オリジナル
550 人が閲覧しました

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

Oracle データベース内の文字列を複数の行に分割します

はじめに

カンマ区切りの文字列を複数行に分割することは、データ処理における一般的なタスクです。 Oracle 10g および 11g では、この目標を効率的に達成するための複数の方法があります。

複数列の分割

複数の値を含む文字列を複数の列に分割するには、REGEXP_REPLACE、REGEXP_SUBSTR、および階層クエリを組み合わせて使用​​できます。

クエリ:

<code class="language-sql">WITH temp AS (
    SELECT name, project, error FROM your_table
)
SELECT
    name,
    project,
    TRIM(REGEXP_SUBSTR(error, '[^,]+', 1, levels.column_value)) AS new_error
FROM
    temp,
    TABLE(CAST(
        MULTISET(
            SELECT level FROM dual CONNECT BY level <= REGEXP_COUNT(error, ',') + 1
        ) AS sys.odcinumberlist
    )) levels
WHERE levels.column_value <= REGEXP_COUNT(error, ',') + 1;</code>
ログイン後にコピー

手順:

  1. REGEXP_SUBSTR 関数は、文字列から指定されたパターンの指定された回数の出現を抽出します。階層クエリ内の column_value によって、n 番目の出現が決まります。
  2. REGEXP_REPLACE 関数は、区切り文字以外の文字を削除して、エラーの総数をカウントします。 (このステップは、最適化されたクエリの REGEXP_COUNT で暗黙的に行われます)
  3. multiset 関数と TABLE 関数は、階層クエリ用に増加する値のセットを作成します。
  4. 一時テーブルとのクロス結合は、エラーが発生するたびに行ごとに繰り返されます。

結論

この改良された方法により、Oracle 10g および 11g で複数列の文字列を複数の行に分割する柔軟な方法が提供されます。 Oracle の組み込み関数と階層クエリなどの高度な技術を使用して、複雑な文字列操作タスクを効率的に処理します。

以上がOracle でカンマ区切りの文字列を複数の行に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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