Sql截取两个字符之间的内容(长度不固定),该怎么解决

Sql截取两个字符之间的内容(长度不固定)
例如有一个字段a,里面的值是一个这样的字符串:
aa@163.com(张三)
bab@163.com(李帅)
****@163.com(王羽)
bsdnn@163.com(小明)

现在想要截取()里面的人名,应该怎么做?谢谢!
注:括号外面的字符长度和内容都是不同的。
------解决思路----------------------
引用:
例如有一个字段a,里面的值是一个这样的字符串:
aa@163.com(张三)
bab@163.com(李帅)
****@163.com(王羽)
bsdnn@163.com(小明)

现在想要截取()里面的人名,应该怎么做?谢谢!
注:括号外面的字符长度和内容都是不同的。


select ltrim(rtrim(regexp_substr('aa@163.com(jake)', '\(.*\)$'), ')'), '(')
  from dual;


------解决思路----------------------
with tmp as
(select 'aa@163.com(张三)' as a from dual union all 
select 'bab@163.com(李帅)' from dual union all 
select '****@163.com(王羽)' from dual union all 
select 'bsdnn@163.com(小明)' from dual)
select regexp_replace(a,'.*\((.*)\)','\1') as  a from tmp 

------解决思路----------------------
with tmp as
(select 'aa@163.com(张三)asdf' as a from dual union all 
select 'bab@163.com(李帅)' from dual union all 
select '****@163.com(王羽)' from dual union all 
select 'bsdnn@163.com(小明)' from dual)
select regexp_replace(a,'.*\((.*)\).*','\1') as  a from tmp 

截取第一个括号里的值
------解决思路----------------------

select regexp_replace(字段名,'.*\((.*)\).*','\1')  as  name from 表名