Oracle データベース: カンマ区切り値を列に効率的に解析する
この記事では、Oracle で頻繁に発生する課題、つまりカンマ区切り文字列 (CSV) から個別の列に個々の値を抽出することに取り組みます。 多数の値 (255 など) を手動で処理するのは現実的ではありません。ただし、オラクルは効率的なソリューションを提供します。
効果的な方法の 1 つは REGEXP_SUBSTR
関数を使用し、正規表現を使用した文字列の分割を可能にします。 正規表現の構造は、正確な結果を得るために非常に重要です。
次のデータについて考えてみましょう:
<code>ROW | VAL ----------- 1 | 1.25, 3.87, 2, ... 2 | 5, 4, 3.3, ....</code>
これらの値を個々の列に分割するには、次の REGEXP_SUBSTR
式を使用できます。
regexp_substr('1,2,3,,5,6', '(.*?)(,|$)', 1, 5, NULL, 1)
この式は次のように設計されています:
.
) が 0 回以上出現する 5 番目の文字シーケンス (*
) を検索し、その後にカンマ (,
) または文字列の末尾 ($
) を配置します。この改良された式では、null 要素が適切に処理され、後続の値の抽出が中断されるのを防ぎます。
このフォーラムのディスカッションで説明されているように、再利用性を高めるために、複雑な正規表現をカスタム関数内にカプセル化できます: https://www.php.cn/link/ae2cd9938873f32a93b6c858bf62f26b.
要約すると、REGEXP_SUBSTR
を適切に作成された正規表現と組み合わせることで、NULL 値や欠損値を扱う場合でも、Oracle でカンマ区切り値を解析するための信頼できる方法が提供されます。
以上がOracle でカンマ区切りの値を列に効率的に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。