Oracle sql从字符串中删除特定标记
我想要一个传递文本varchar2和标记名的函数 并返回已删除标记及其子标记的文本 只保留 我不知道标签下儿童的水平如何 输入:Oracle sql从字符串中删除特定标记,sql,oracle,plsql,Sql,Oracle,Plsql,我想要一个传递文本varchar2和标记名的函数 并返回已删除标记及其子标记的文本 只保留 我不知道标签下儿童的水平如何 输入: set serverouput on declare v_input_str varchar(4000) := ' <parent1> <Message>12ab</Message> <CreationDate>02/08/2015</Creation
set serverouput on
declare
v_input_str varchar(4000) := ' <parent1>
<Message>12ab</Message>
<CreationDate>02/08/2015</CreationDate>
<Total>500.45</Total>
<Collect>
<Name>Peter</Name>
</Collect>
</parent1>';
begin
dbms_output.put_line(v_input_str);
end;
/
output :
' <parent1>
<Message>12ab</Message>
<CreationDate>02/08/2015</CreationDate>
<Total>500.45</Total>
<Collect/>
</parent1>'
提前感谢您可以为此使用deleteXML
假设您的参数标记存储在标记变量中,请执行以下操作:
declare
v_input_str clob := ' <parent1>
<Message>12ab</Message>
<CreationDate>02/08/2015</CreationDate>
<Total>500.45</Total>
<Collect>
<Name>Peter</Name>
</Collect>
</parent1>';
tag varchar2(20) := 'Collect';
begin
select deleteXML(xmltype(v_input_str), '//'||tag||'/*').getClobVal() into v_input_str from dual;
dbms_output.put_line(v_input_str);
end;
输出:
<parent1><Message>12ab</Message><CreationDate>02/08/2015</CreationDate><Total>500.45</Total><Collect/></parent1>
谢谢你的回答。它对我有用。但是,对齐不是最初的。为什么对齐很重要?