我有一个带分隔符“## 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;
答案 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>