我想在输出中显示特殊符号。
例如:我的文字可能包含<
,>
等实体代码;等等
我想在输出中将其显示为<
,>
。我需要在SQL中执行此操作。
我搜索了这个并获得了一个功能,
select dbms_xmlgen.convert('ABC <; ',0) from dual
这是相反的过程,它将输出生成为'ABC&lt;'
我尝试过解码但不起作用。我甚至改变了sql命令,
select dbms_xmlgen.convert('ABC <; ',1) from dual
,其中1代表entity_decode
,但我没有得到所需的输出。
答案 0 :(得分:4)
我没有使用DBMS_XMLGEN.convert,而是使用了函数UTL_I18N.UNESCAPE_REFERENCE:
SELECT UTL_I18N.UNESCAPE_REFERENCE('ABC < ') FROM DUAL;
结果:
ABC <
有关Oracle doc的更多信息:http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/u_i18n.htm#i998992
答案 1 :(得分:1)
尝试类似:
SELECT DBMS_XMLGEN.CONVERT('ABC < ', DBMS_XMLGEN.ENTITY_DECODE) FROM DUAL
另外,请参阅Oracle docs。
修改强>
好的,显然这是某些Oracle版本中的错误(9.2.0.1和10.1.0.2,似乎如此)。 Somebody solved it包装函数。我不知道应该如何解决它,但我值得尝试。创建一个这样的函数:
CREATE OR REPLACE FUNCTION
xml_decode(
i_xml_string IN VARCHAR2
)
RETURN VARCHAR2
IS
BEGIN
RETURN
DBMS_XMLGEN.convert(
i_xml_string,
DBMS_XMLGEN.ENTITY_DECODE
);
END;
然后使用它:
SELECT xml_decode('ABC < ') FROM DUAL;
如果有效,请告诉我们。