同 SUBSTR + INSTR :
SUBSTR + INSTR
SQL> with test (col) as 2 (select '<pde><a><dov>784512</dov></a></pde>' from dual) 3 select substr(col, instr(col, '<dov>', 1, 1), 4 instr(col, '</dov>', 1, 1) + 6 - instr(col, '<dov>')) result 5 from test; RESULT ----------------- <dov>784512</dov> SQL>
将REGEXP_REPLACE与指定的掩码一起使用:
select x.*, regexp_replace(str, '.*<a>(.*)</a>.*', '\1'), -- anything between <a> </a> regexp_replace(str, '.*(<dov>.*</dov>).*', '\1'), -- anything between <dov> </dov> tag (tag included) regexp_replace(str, '.*<pde><a>(.*)</a></pde>.*', '\1'), -- anything between <pde><a> </a></pde> regexp_replace(str, '.*<pde><a>(<dov>.*</dov>)</a></pde>.*', '\1') -- anything between <pde><a> </a></pde> that is inside <dov> </dov> tag (tag included) from (select '<pde><a><dov>784512</dov></a></pde>' as str from dual) x;
您可以使用 regexp_replace() :
regexp_replace()
select x.*, regexp_replace(str, '<pde><a>(.*)</a></pde>', '\1') from (select '<pde><a><dov>784512</dov></a></pde>' as str from dual) x;
要么 regexp_substr() :
regexp_substr()
select x.*, regexp_substr(str, '<dov>.*</dov>') from (select '<pde><a><dov>784512</dov></a></pde>' as str from dual) x;
我不清楚你是否想要字符串,因为“dov”或“pde / a”之间。