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

Eri*_*rik 3 regex sql oracle

我有一个名为email_id的表 ,列名称为email_id,列中有这些电子邮件 id\xe2\x80\x99s

\n\n
name@yahoo.com\nname@msn.com\nname@gmail.com\nname@xmsoftware.com \n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
yahoo\nmsn\ngmail\nxmsoftware \n
Run Code Online (Sandbox Code Playgroud)\n\n

还有比这更简单的方法(或)任何其他功能吗?

\n\n
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 \nfrom email_id;\n
Run Code Online (Sandbox Code Playgroud)\n

Kau*_*yak 5

我会比较喜欢REGEXP_SUBSTR

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

演示