0
私はこのような質問がたくさんありましたが、どれも100%適切ではありません。私はOracleは、私がoracleをコンマで区切って引用符で囲んだ文字列
'abcd,123,,defoifcd,"comma, in string",87765,,,hello'
が、それはカンマでデータを分離し、通常意味する文字列を持っている
を表現11Gが、(さらに直列に)空のデータ可能性があり、コンマはデータ内に存在する場合それは引用されています。
は、これまで最高のREG expがあり、1つの
'("[^"]*"|[^,]+)'
が、これは
with test as
(select
'abcd,123,,defoifcd,"comma, in string", 87765,,,hello'
str from dual
)
select REGEXP_SUBSTR(str, '("[^"]*"|[^,]+)', 1, rownum) split
from test
connect by level <= length (regexp_replace (str, '("[^"]*"|[^,]+)')) + 1;
は私もと空のデータを交換しようとしたそのクエリを使用して、空のすべてのデータの最後に置きます、該当なし、そうすること
'abcd,123,n/a,defoifcd,"comma, in string",87765,n/a,n/a,hello'
しかし、regexp_replaceは空の最初の出現のみを置き換えますデータ
select
regexp_replace('abcd,123,,defoifcd,"comma, in string",87765,,,hello', '(,,)', ',n/a,')
str from dual;
ありがとうございました!
は[この](http://stackoverflow.com/a/35502233/266304 )あなたはすでに見ていた?それはregexp_replaceではなくダミー値を入れて置き換えて使用しています... –
うん、そのようなものは確かに良いアイデアを置き換える – pillesoft