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

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

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

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

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