2

コンマ区切りのリストから文字列のリストを返そうとしています。ただし、二重引用符で囲まれた文字列のコンマを返したいと思っています。

これは私の現在の声明です:

SELECT 
  regexp_substr('one,two,"three, four five",six,"seven, eight, nine"', 
                '(.*?,){'||(n-1)||'}([^,]*)', 1, 1, '', 2) token
FROM (SELECT LEVEL n FROM dual CONNECT BY LEVEL <= 10);

これは以下を返します:

one
two
"three
four five"
six
"seven
eight
nine"

しかし、私は返す必要があります:

one
two
three, four, five
six
seven, eight, nine

私の正規表現はさびています。これを達成するために正規表現を変更するきれいな方法はありますか?

ありがとう!

4

1 に答える 1

3

これを試して:

'^("[^"]*",|[^",]*,){'||(n-1)||'}("[^"]*"|[^",]*)', 1, 1, '', 2

またはより単純なバージョン:

'(^|,)("[^"]*"|[^",]*)', 1, n, '', 2

または引用符が必要ない場合は、次のようにラップします。

regexp_replace( ..., '"', '')
于 2013-09-27T05:37:07.117 に答える