转义XML查询oracle DB列值得到的字符串中的特殊字符

Escape XML special characters in strings obtained by querying oracle DB column values

假设我的数据类型为 varchar2 的 DB 列具有包含“<”“>”和“&”等字符的值,并且我希望它们像 & lt; 一样被转义。 , >等在这​​些列上使用 select 查询获得时,oracle 中是否有一些内置功能 jdbc 来执行此 activity?

htf.escape_sc() 函数做你期望的。但我宁愿用 Java 本身来做这件事。

SQL> select htf.escape_sc('<Welcome>Hello WOrld</Welcome>') parsed FROM DUAL;

PARSED
--------------------------------------------------------------------------------
&lt;Welcome&gt;Hello WOrld&lt;/Welcome&gt;

最大的限制是.. VARCHAR 列被限制为最多 4000 个字符(解析后).. 如果超过就会抛出异常!!所以,请在客户端进行这些解析。

More on this from Docs

您可以使用 dbms_xmlgen.convert() function:

select dbms_xmlgen.convert('<element>Text with "quotes" and ''&''</element>')
from dual;

DBMS_XMLGEN.CONVERT('<ELEMENT>TEXTWITH"QUOTES"AND''&''</ELEMENT>')                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
---------------------------------------------------------------------------------
&lt;element&gt;Text with &quot;quotes&quot; and &apos;&amp;&apos;&lt;/element&gt;

varchar2clob 值有重载版本。只需使用 table 列而不是固定字符串。或者转换为自动编码的 XMLType 变量,或者使用适合您的数据和所需输出的另一个 XMLGen 函数。