有没有最简单的方法从oracle中的电子邮件地址中仅选择域名?

问题描述 投票:2回答:2

我有一个名为email_id的表,列名为email_id,我在列中有这些电子邮件ID

[email protected]
[email protected]
[email protected]
[email protected] 

我只需要像这样的域名作为结果

yahoo
msn
gmail
xmsoftware 

是否有最简单的方法(或)除此之外的任何其他功能?

select substr(email_id.email_id,(instr(email_id.email_id,'@',1)+1),(instr(email_id.email_id,'.',1) - (instr(email_id.email_id,'@',1)+1))) as domain 
from email_id;
sql regex oracle
2个回答
4
投票

我更喜欢REGEXP_SUBSTR

select REGEXP_SUBSTR(email_id,'^.*@(.*)\.(.*)$',1,1,null,1) as domain 
 FROM emails;--                     ^ first match        ^ within()

Demo


1
投票

老式的方式是使用qazxsw poi组合。输入需要更多的字母(与正则表达式相比),但在大型数据集上可能会更快。

SUBSTR + INSTR
© www.soinside.com 2019 - 2024. All rights reserved.