使用Oracle SQL获取两个特定字符之间的值

3
我正在寻找一条Oracle SQL查询语句,以获取值'LATCH',该值位于'RTG/LATCH.PETROL_ABC'中。
谢谢。
2个回答

5

您可以使用正则表达式:

select regexp_replace('RTG/LATCH.PETROL_ABC', '.*/(.+)\..*', '\1' ) from dual

首先,我们要找到匹配项:

.*/ 匹配 RTG/

(.+) 匹配 LATCH 并将匹配项标记为第1组

\..* 匹配 .PETROL_ABC

然后,我们使用 \1 将整个字符串替换为匹配项中的第1组。


谢谢您的帮助,能否解释一下它是如何工作的...我无法弄清楚这个函数。 - user2469253
正则表达式有一定的学习曲线,但如果您经常进行文本操作,它们非常强大。这个网站提供了一个很好的介绍:http://www.regular-expressions.info/ - Wouter
@user2469253,我会在回答中尽力解释。 - ApInvent

1
使用 SUBSTR() 和 INSTR()。
SELECT SUBSTR('RTG/LATCH.PETROL_ABC',
    INSTR('RTG/LATCH.PETROL_ABC', '/') + 1,
    INSTR('RTG/LATCH.PETROL_ABC', '.') - INSTR('RTG/LATCH.PETROL_ABC', '/') - 1)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接