オラクルの分割クエリに問題があります。
Oracle クエリで connect by と正規表現を使用してカンマ区切りのデータを複数の行に分割しているときに、重複行が増えています。たとえば、実際には私のテーブルには 150 行があり、その 1 つの 2 つの行にはコンマで区切られた文字列が含まれているため、全体としては 155 行しか取得する必要はありませんが、2000 行を取得しています。個別の機能を使用すると正常に機能しますが、クエリ結果に重複する行は必要ありません。
次のクエリを試しましたが、クエリ結果に重複した行が生成されています:
WITH CTE AS (SELECT 'a,b,c,d,e' temp,1 slno FROM DUAL
UNION
SELECT 'f,g',2 from dual
UNION
SELECT 'h',3 FROM DUAL)
SELECT TRIM(REGEXP_SUBSTR( TEMP, '[^,]+', 1, LEVEL)) ,SLNO FROM CTE
CONNECT BY LEVEL <= LENGTH(REGEXP_REPLACE(temp, '[^,]+')) + 1
編集
上記の選択クエリは、単一のコンマ区切り文字列のみを分割できますが、複数の行を持つテーブルで実行すると、重複する行が生成されます。重複行を制限するには?