Oracle テーブル内の複数のカンマ区切り値を一意の行に分割する
Oracle では、カンマ区切り値を複数の行に分割するのが一般的です。正規表現と CONNECT BY 句を使用します。ただし、よく遭遇する課題の 1 つは重複行の生成です。これは、各行にカンマ区切りの文字列が含まれる複数の行を持つテーブルで特に問題となる可能性があります。
この問題に対処するには、変更されたクエリを使用して、効果的に重複行を排除しながら値を分割できます。
WITH CTE AS (SELECT 'a,b,c,d,e' temp, 1 slno FROM DUAL UNION SELECT 'f,g' temp, 2 slno FROM DUAL UNION SELECT 'h' temp, 3 slno FROM DUAL) SELECT TRIM(REGEXP_SUBSTR(temp, '[^,]+', 1, level)), slno FROM CTE CONNECT BY level <= REGEXP_COUNT(temp, '[^,]+') AND PRIOR slno = slno AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL
このクエリでは 2 つの重要な変更が導入されています:
その結果、このクエリは、一意の行識別を維持し、重複行の生成を防ぎながら、コンマ区切りの値を複数の行に効果的に分割します。
以上がOracle で重複行を生成せずにカンマ区切り値を効率的に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。