数据库中一列数据中带有括号,只求括号内的内容

数据库中一列数据中带有括号,只求括号内的内容

比如varchar(100),我只想求这个100)

用正则,但是得看是什么数据库,不同数据库的正则表达式有区别,比如postgresql的是

select regexp_substr('var(456)', '(?<=\()(.+?)(?=\))')

img

但同样的正则表达式在mysql和Oracle里是查不出来的,因为转义符及函数参数可能有区别。

另外,还有一种通用的思路,就是用instr函数来定位左括号和右括号出现的位置,再用substr来进行截取

select substr(a,instr(a,'(')+1,instr(a,')')-instr(a,'(')-1) from 
(select 'var(456789)' a from dual)

img

用字符串函数处理。字符串分割,正则表达式都可以。

oracle吗?

select example,regexp_substr(example, '\d+') as "result"
  from (select 'varchar(100)' example from dual);

   EXAMPLE         result
varchar(100)    100

substring_index(substring_index(目标字段名,’)’,1),’(’,-1)

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632