转义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
--------------------------------------------------------------------------------
<Welcome>Hello WOrld</Welcome>
最大的限制是.. VARCHAR
列被限制为最多 4000 个字符(解析后).. 如果超过就会抛出异常!!所以,请在客户端进行这些解析。
您可以使用 dbms_xmlgen.convert()
function:
select dbms_xmlgen.convert('<element>Text with "quotes" and ''&''</element>')
from dual;
DBMS_XMLGEN.CONVERT('<ELEMENT>TEXTWITH"QUOTES"AND''&''</ELEMENT>')
---------------------------------------------------------------------------------
<element>Text with "quotes" and '&'</element>
varchar2
和 clob
值有重载版本。只需使用 table 列而不是固定字符串。或者转换为自动编码的 XMLType 变量,或者使用适合您的数据和所需输出的另一个 XMLGen 函数。
假设我的数据类型为 varchar2 的 DB 列具有包含“<”“>”和“&”等字符的值,并且我希望它们像 & lt; 一样被转义。 , >等在这些列上使用 select 查询获得时,oracle 中是否有一些内置功能 jdbc 来执行此 activity?
htf.escape_sc()
函数做你期望的。但我宁愿用 Java 本身来做这件事。
SQL> select htf.escape_sc('<Welcome>Hello WOrld</Welcome>') parsed FROM DUAL;
PARSED
--------------------------------------------------------------------------------
<Welcome>Hello WOrld</Welcome>
最大的限制是.. VARCHAR
列被限制为最多 4000 个字符(解析后).. 如果超过就会抛出异常!!所以,请在客户端进行这些解析。
您可以使用 dbms_xmlgen.convert()
function:
select dbms_xmlgen.convert('<element>Text with "quotes" and ''&''</element>')
from dual;
DBMS_XMLGEN.CONVERT('<ELEMENT>TEXTWITH"QUOTES"AND''&''</ELEMENT>')
---------------------------------------------------------------------------------
<element>Text with "quotes" and '&'</element>
varchar2
和 clob
值有重载版本。只需使用 table 列而不是固定字符串。或者转换为自动编码的 XMLType 变量,或者使用适合您的数据和所需输出的另一个 XMLGen 函数。