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 表名