发生INSTR的SUBSTR

时间:2018-04-16 07:46:27

标签: oracle substring

我有一个带分隔符“## GS ##”的字符串,如“## GS ## ABC ## GS ## DEF ## GS ## GHI ## GS ##”,

在分隔符之间的值的长度是变化的,查询是在第3和第4个分隔符之间检索值,在这种情况下是GHI。

如果我可以使用'-16'进行硬编码而无法改进,下面的脚本可以正常工作吗?

SELECT SUBSTR('##GS##ABC##GS##DEF##GS##GHI##GS##', INSTR('##GS##ABC##GS##DEF##GS##GHI##GS##', '##GS##', 1, 3)+6,INSTR('##GS##ABC##GS##DEF##GS##GHI##GS##', '##GS##', 1, 3)-16)AS CUS_REF_ID FROM DUAL;

1 个答案:

答案 0 :(得分:0)

这个怎么样?所需的值是第6个“单词”:

SQL> with test as (select '##GS##ABC##GS##DEF##GS##GHI##GS##' col from dual)
  2    select regexp_substr(col, '\w+', 1, 6) result
  3  from test;

RES
---
GHI

SQL>