【发布时间】:2013-08-03 13:49:01
【问题描述】:
这是为了我的练习,我有这样的文字:
"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
请提供任何好的解决方案。
谢谢
【问题讨论】:
-
完成一半是什么意思?这没有给你预期的结果吗?
-
@RohitJain,更新结果出乎意料。