我在Phone_mid_bsnl_AC_10035
列中有几个字符串,我想提取AC旁边的代码10035。
我使用了这个SQL代码:
WITH CTE(STR) AS
(
SELECT 'Phone_mid_bsnl_AC_10035'
FROM DUAL
)
SELECT REGEXP_SUBSTR(STR, '[^_]+', 1, 5)
FROM CTE
它确实给予了代码,但在某些字符串中,代码不一定出现在5位置。就像在这个字符串Phone_up_gsk_pdp_AC_90054
中,它出现在6位置。有没有一种方法可以使用reg_exp在匹配AC后只得到数字。代码将始终是5位数。
3条答案
按热度按时间g0czyy6m1#
也可以使用
regexp_replace
来完成Demo here
slsn1g292#
使用
它将提取
_
和_
之间的第一个5位数或字符串的结尾。演示here。
tjjdgumg3#
如果numeric value总是在字符串的末尾,那么可以将其简化为
样本数据:
查询:
result_1
:返回最后一个下划线字符后的字符串result_2
:返回“锚定”到源字符串末尾的数字字符串