ここで同様の質問に基づいてこのソリューションを作成しましたが、私の例はそこで引用されている例よりもはるかに大きくなっています。私のソリューションは機能しますが、それが最善/最も効率的かどうか疑問に思っています。
1 つの注意点: これは、単純なクエリとして実行できるようにするために必要です。
この SQL を作成して、文字列を複数の列に分割しました。次の理由により、変数をそこに残しました。
- それは実際の文字列よりも短く、
- 質問することはあまり重要ではありません。
実行時に、その変数は 13 個のコンマで区切られた 14 個の値を持つ文字列に置き換えられます。最後の 3 つの値を連結する必要があります。
これ以上苦労することなく、ここに私のクエリがあります:
select
regexp_substr('$CSV Text Single Line$','[^,]+',1, 1) c1,
regexp_substr('$CSV Text Single Line$','[^,]+',1, 2) c2,
regexp_substr('$CSV Text Single Line$','[^,]+',1, 3) c3,
regexp_substr('$CSV Text Single Line$','[^,]+',1, 4) c4,
regexp_substr('$CSV Text Single Line$','[^,]+',1, 5) c5,
regexp_substr('$CSV Text Single Line$','[^,]+',1, 6) c6,
regexp_substr('$CSV Text Single Line$','[^,]+',1, 7) c7,
regexp_substr('$CSV Text Single Line$','[^,]+',1, 8) c8,
regexp_substr('$CSV Text Single Line$','[^,]+',1, 9) c9,
regexp_substr('$CSV Text Single Line$','[^,]+',1, 10) c10,
regexp_substr('$CSV Text Single Line$','[^,]+',1, 11) c11,
replace(regexp_substr('$CSV Text Single Line$','[^,]+',1, 12)
||','||
regexp_substr('$CSV Text Single Line$','[^,]+',1, 13)
||','||
regexp_substr('$CSV Text Single Line$','[^,]+',1, 14)
,'"','') c12
from dual
アドバイスをよろしくお願いします。