我有一個表中有一列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