ホームページ > データベース > mysql チュートリアル > Oracle で NULL を含むカンマ区切り値を複数の列に効率的に分割する方法

Oracle で NULL を含むカンマ区切り値を複数の列に効率的に分割する方法

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

How to Efficiently Split Comma-Separated Values with Nulls into Multiple Columns in Oracle?

Oracle: カンマ区切りの値を複数の列に分割する

この記事では、特に CSV 文字列内の null または空の要素を扱う場合に、Oracle SQL でカンマ区切り値 (CSV) を効率的に分割するという課題について説明します。 REGEXP_SUBSTR を使用した標準的なアプローチは、これらの場合に失敗する可能性があります。

堅牢なソリューションでは、洗練された正規表現パターン (.*?)(,|$) を利用します。このパターンは、NULL と空のエントリを効果的に処理します。パターンを分析してみましょう:

  1. (.*?): この部分は、貪欲にではなく (.)、任意の文字 (*) を 0 回以上 (?) キャプチャします。 これにより、次のカンマ (または文字列の末尾) までの文字のみがキャプチャされるようになります。
  2. (,|$): これは、カンマ (,) または文字列の末尾 ($) のいずれかに一致します。これは各値を区切る区切り文字として機能します。

この改善されたパターンにより、CSV 文字列内に null または空のエントリが含まれる場合でも、値の正確な抽出が保証されます。 たとえば、文字列「1,2,3,,5,6」から 5 番目の値を抽出するには、次のクエリを使用します:

<code class="language-sql">REGEXP_SUBSTR('1,2,3,,5,6', '(.*?)(,|$)', 1, 5, NULL, 1)</code>
ログイン後にコピー

このアプローチは、NULL が存在する場合に誤った値を取得するという一般的なエラーを回避し、Oracle で CSV データを解析するための信頼できる方法を提供します。

以上がOracle で NULL を含むカンマ区切り値を複数の列に効率的に分割する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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