数据库中一列数据中带有括号,只求括号内的内容
比如varchar(100),我只想求这个100)
用正则,但是得看是什么数据库,不同数据库的正则表达式有区别,比如postgresql的是
select regexp_substr('var(456)', '(?<=\()(.+?)(?=\))')
但同样的正则表达式在mysql和Oracle里是查不出来的,因为转义符及函数参数可能有区别。
另外,还有一种通用的思路,就是用instr函数来定位左括号和右括号出现的位置,再用substr来进行截取
select substr(a,instr(a,'(')+1,instr(a,')')-instr(a,'(')-1) from
(select 'var(456789)' a from dual)
用字符串函数处理。字符串分割,正则表达式都可以。
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)
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!