我有一个表中有一列NVARCHAR2数据类型包含一个字符串。 该字符串包含一些电子邮件ID,我需要以逗号分隔的方式提取。从NVARCHAR2获取电子邮件地址DATATYPE
下面是测试数据 -
create table nvarchar2_email (email_reject nvarchar2(1000));
insert into nvarchar2_email values ('com.wm.app.b2b.server.ServiceException: javax.mail.SendFailedException: Invalid Addresses; nested exception is:
com.sun.mail.smtp.SMTPAddressFailedException: 550 5.1.1 <[email protected]>: Recipient address rejected: User unknown in virtual alias table;
nested exception is:
com.sun.mail.smtp.SMTPAddressFailedException: 550 5.1.1 <[email protected]>: Recipient address rejected: User unknown in virtual alias table
nested exception is:
com.sun.mail.smtp.SMTPAddressFailedException: 550 5.1.1 <[email protected]>: Recipient address rejected: User unknown in virtual alias table');
insert into nvarchar2_email values ('com.wm.app.b2b.server.ServiceException: javax.mail.SendFailedException: Invalid Addresses; nested exception is:
com.sun.mail.smtp.SMTPAddressFailedException: 550 5.1.1 <[email protected]>: Recipient address rejected: User unknown in virtual alias table;
nested exception is:
com.sun.mail.smtp.SMTPAddressFailedException: 550 5.1.1 <[email protected]>: Recipient address rejected: User unknown in virtual alias table');
我尝试使用下面的SQL但重复的电子邮件ID!
select email_rejetc, listagg(REGEXP_substr (email_rejetc,'[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}', 1,level), ',') within group (order by email_rejetc) invalid_email
from nvarchar2_email
connect by level <= REGEXP_count (email_rejetc,'[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}')
group by EMAIL_REJETC
这里所要求的输出是等
[email protected],[email protected],[email protected]
电子邮件可以在表中的不同的行而变化的数量;
我的DB是: Oracle数据库11g企业版发布11.2.0.3.0 - 64位生产
伟大的工作很好非常感谢 – mradul