我给了看起来像这样的字符串:
给定字符串:#152#005#001#00000000000000000000#0# #
我想提取第3个和第4个“#”之间的数字,在这种情况下为001。
所需的输出:001
答案 0 :(得分:1)
这里的一个选项是对捕获组使用REGEXP_SUBSTR
:
SELECT regexp_replace(your_string, '^#([^#]+#){2}([^#]+).*$', '\2') AS output
FROM your_table;
以下是^#([^#]+#){2}([^#]+).*$
使用的正则表达式模式的说明:
^ from the start of the string
# match an initial #
([^#]+#){2} followed by two paths (consume 152#005#)
([^#]+) then match and consume the third term (001)
.* consume the rest of the string
$ until the end
答案 1 :(得分:0)
这两个选项怎么样:
SUBSTR
+ INSTR
组合SQL> with test (col) as
2 (select '#152#005#001#00000000000000000000#0# #' from dual)
3 select regexp_substr(col, '\w+', 1, 3) result_1,
4 --
5 substr(col, instr(col, '#', 1, 3) + 1,
6 instr(col, '#', 1, 4) - instr(col, '#', 1, 3) - 1) result_2
7 from test;
RES RES
--- ---
001 001
SQL>