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

Oracle でカンマ区切りの値を列に効率的に分割するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-22 09:26:10
オリジナル
888 人が閲覧しました

How Can I Efficiently Split Comma-Separated Values into Columns in Oracle?

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

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