2

これは私の練習用です。次のようなテキストがあります。

 "lovely heart"<abc.def@hotmail.com>,
 "<<*>>Freeeky<<*>> Jack" <aabbcc@gmail.com>,
 "heavens's kingk*ng '-'asdf" <bbb@yahoo.co.in>
 "sample[^-^]"<sample@ss.com>

抽出する必要があるのは:

abc.def@hotmail.com
aabbcc@gmail.com
bbb@yahoo.co.in
sample@ss.com

これが私の試みですが、まだ半分以下です。

WITH t AS
     (SELECT '"lovely heart"<abc.def@hotmail.com>,
"<<*>>Freeeky<<*>> Jack" <aabbcc@gmail.com>, 
"heavens''s kingk*ng ''-''asdf" <bbb@yahoo.com>' word
     FROM dual
     )
SELECT regexp_substr(word, '<(.*@.*)>',1,LEVEL, NULL,1)
FROM t
     CONNECT BY level <= regexp_count(word, '<(.*@.*)>');

いくつかの結果は次のようになります:

<*>>Freeeky<<*>> Jack" <aabbcc@gmail.com

良い解決策をお願いします。

ありがとう

4

1 に答える 1