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」に分割する方法を示しています。 出力には、分離された値が明確に表示されます。 ROWNUM
と UNION ALL
を使用してサンプル データを作成していることに注意してください。これは、元の例よりも標準的なアプローチです。
以上がカンマ区切りの値を Oracle テーブルの列に確実に分割する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。