ホームページ >データベース >mysql チュートリアル >カンマ区切りの値を Oracle テーブルの列に確実に分割する方法

カンマ区切りの値を Oracle テーブルの列に確実に分割する方法

DDD
DDDオリジナル
2025-01-22 09:22:08622ブラウズ

How to Reliably Split Comma-Delimited Values into Oracle Table Columns?

Oracle テーブル内のカンマ区切り値の効率的な解析

カンマ区切り値 (CSV) を使用して大規模なデータセットを処理するには、多くの場合、データ分析と操作を効率化するために、これらの値を Oracle テーブル内の個々の列に分割する必要があります。正規表現は REGEXP_SUBSTR 関数による解決策を提供しますが、式 [^,] を使用する一般的なアプローチは信頼できない可能性があります。

これは、null または空の値を含む CSV データを扱う場合に特に当てはまります。 Null や空の文字列に関係なく、要素を正確に抽出するには、より堅牢な正規表現が必要です。 次の表現が推奨されます:

<code class="language-sql">(.*?)(,|$)</code>

この式はキャプチャ グループを利用して、先頭または末尾のコンマを含む目的の要素を正確に識別します。 REGEXP_SUBSTR 内でキャプチャ グループ インデックス (1) を指定すると、要素の値を確実に取得し、設定された値と null 値の両方を正しく処理できます。

次のクエリ例を考えてみましょう:

<code class="language-sql">SELECT
  ROW_NUM,
  REGEXP_SUBSTR(VAL, '(.*?)(,|$)', 1, 1, NULL, 1) AS VAL1,
  REGEXP_SUBSTR(VAL, '(.*?)(,|$)', 1, 2, NULL, 1) AS VAL2
FROM (
  SELECT
    ROWNUM AS ROW_NUM,
    '1.25, 3.87, 2' AS VAL
  FROM dual
  UNION ALL
  SELECT
    ROWNUM,
    '5, 4, 3.3'
  FROM dual
)</code>

このクエリは、NULL または空のエントリでもデータの整合性を維持しながら、「VAL」列のカンマ区切り値を 2 つの新しい列「VAL1」と「VAL2」に分割する方法を示しています。 出力には、分離された値が明確に表示されます。 ROWNUMUNION ALL を使用してサンプル データを作成していることに注意してください。これは、元の例よりも標準的なアプローチです。

以上がカンマ区切りの値を Oracle テーブルの列に確実に分割する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。