有一个PL / SQL函数HTF.ESCAPE_SC可以转义&
到&
等特殊字符
示例:
SELECT HTF.ESCAPE_SC('<parameter name="port">48677</parameter>')
FROM dual;
<parameter name="port">48677</parameter>
有人知道它的反函数吗?当然我可以跑
SELECT REPLACE(REPLACE(REPLACE(REPLACE(
'<parameter name="port">48677</parameter>',
'<', '<'), '>', '>'), '"','"'), '&','&')
FROM dual;
但我想知道是否有内置功能。</ p>
答案 0 :(得分:1)
我认为没有内置的功能。您可以编写一个小函数来防止对replace()
的无法读取的一堆调用。
create or replace function unescape_sc(p_str in varchar2)
return varchar2
is
l_str varchar2(2000) := p_str; -- adjust size as required
begin
l_str := replace(l_str, '&', '&');
l_str := replace(l_str, '>', '>');
l_str := replace(l_str, '<', '<');
l_str := replace(l_str, '"', '"');
return l_str;
end unescape_sc;
select unescape_sc('<parameter name="port">48677</parameter>')
from dual;
答案 1 :(得分:1)
我找到了这个功能:DBMS_XMLGEN.CONVERT 我做编码和解码。
SELECT DBMS_XMLGEN.CONVERT('Please encode <this> tag', 1) FROM dual;
Please encode <this> tag
SELECT DBMS_XMLGEN.CONVERT('Please decode <this> tag', 0) FROM dual;
Please decode <this> tag
答案 2 :(得分:1)
我发现了这个:
#include<stdio.h>
void main()
{
int i,num,age;
clrscr();
printf("How many number do you have to enter "):
scanf("%d",&num);
for(i=0;i<num;i++)
{
printf("enter the age[%d]",i+1);
scanf("%d",&age);
}
return();
}
输出是:
SELECT utl_i18n.unescape_reference ('<parameter name="port">48677</parameter>')
FROM dual