我正在尝试从Outlook主题行中提取特定文本。这是计算在SAP中输入的每个订单的周转时间所必需的。我有一个主题行如下
SO# 3032641559 FW: Attached new PO 4500958640- 13563 TYCO LJ
我的最终输出应该是这样的:3032641559
我已经能够使用像这样的公式在MS excel中执行此操作
=IFERROR(INT(MID([@[Normalized_Subject]],SEARCH(30,[@[Normalized_Subject]]),10)),"Not Found")
上述公式[@[Normalized_Subject]]
中的是存在SO号的列的名称。我已经要求在甲骨文中这样做,但我对此很新。非常感谢您对此的帮助。
注意:在上面的主题行中,数字30在每个主题行中都很常见。
答案 0 :(得分:2)
REGEXP_SUBSTR()
的最后一个参数表示您要选择的子表达式。在这种情况下,你不能只匹配30然后更多的数字,因为第二组数字可能有30。所以,匹配以下更安全,其中x是更多的数字。
SO# 30xxxxxx
作为正则表达式,这变为:
SO#\s30\d+
其中\s
表示空格\d
表示数字字符,而+
表示您想要匹配的字符数。但是,我们可以使用子表达式子串可用;为了做到这一点,你需要有子表达式;即创建要拆分字符串的组:
(SO#\s)(30\d+)
把它放在函数调用中,你就可以了:
regexp_substr(str, '(SO#\s)(30\d+)', 1, 1, 'i', 2)