如何使用 REGEXP_SUBSTR 在 Oracle中获取我想要的这些数据
SPRINTMVNO_PM_CDR_IWIRELESS_20121110_0813.csv get '08'in last four digits
RK_IPDR_RKMSG2_0043722_DT_20121113162710.txt get '0043722' in the middle(between'_')
wireless_201211120015_201211120515 get '0515' (last four digits)
我已经尝试了很多次,但有些表达式在 PHP 或其他语言中可以正常工作,但在 ORACLE 中不能正常工作。也许语法不同。
例如:我可以使用第二个 /(?<=_)[0-9]*(?=_)/
来获取 php 中的数字,但这在 Oracle 中不起作用。
我试过了
SELECT REGEXP_SUBSTR('RK_IPDR_RKMSG2_0043722_DT_20121113162710.txt','(?<=_)[0-9]*(?=_)')
FROM dual;
没有输出。所以不是两条斜线的问题
这个问题的另一种表述是“如何使用 Oracle 的正则表达式在字符之间获取内容或以字符开头但不包含它?”
我知道我可以通过使用字符串函数轻松获取这些数据,问题是要处理大量不同的字符串,每个字符串都有不同的数据要检索。所以我想将模式存储到数据库中,并使用一个 regexp_substr 来获取所有数据。否则我需要对这些规则进行硬编码。