首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Oracle中是否存在HTF.ESCAPE_SC的内置逆函数?

在Oracle中是否存在HTF.ESCAPE_SC的内置逆函数?
EN

Stack Overflow用户
提问于 2016-10-27 10:09:26
回答 3查看 3K关注 0票数 3

有一个PL/SQL函数SC,它将像&这样的特殊字符转义到&

示例:

代码语言:javascript
复制
SELECT HTF.ESCAPE_SC('<parameter name="port">48677</parameter>')
FROM dual;

&lt;parameter name=&quot;port&quot;&gt;48677&lt;/parameter&gt;

有人知道它的反函数吗?我当然可以跑

代码语言:javascript
复制
SELECT REPLACE(REPLACE(REPLACE(REPLACE(
    '&lt;parameter name=&quot;port&quot;&gt;48677&lt;/parameter&gt;', 
 '&lt;', '<'), '&gt;', '>'), '&quot;','"'), '&amp;','&')
FROM dual;

但我不知道是否有内置功能。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-08 19:13:56

我找到了这个函数:XMLGEN.CONVERT i做编码和解码。

代码语言:javascript
复制
SELECT DBMS_XMLGEN.CONVERT('Please encode &lt;this&gt; tag', 1) FROM dual;

Please encode <this> tag



SELECT DBMS_XMLGEN.CONVERT('Please decode <this> tag', 0) FROM dual;

Please decode &lt;this&gt; tag
票数 2
EN

Stack Overflow用户

发布于 2016-10-28 10:11:43

我不认为这是内置的。您可以编写一个小函数来防止对replace()的不可读堆栈调用。

代码语言:javascript
复制
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, '&amp;', '&');
  l_str := replace(l_str, '&gt;', '>');
  l_str := replace(l_str, '&lt;', '<');
  l_str := replace(l_str, '&quot;', '"');
  return l_str;
end unescape_sc;

select unescape_sc('&lt;parameter name=&quot;port&quot;&gt;48677&lt;/parameter&gt;')
from dual;
票数 1
EN

Stack Overflow用户

发布于 2017-07-28 10:39:36

我发现了这个:

代码语言:javascript
复制
SELECT utl_i18n.unescape_reference ('&lt;parameter name=&quot;port&quot;&gt;48677&lt;/parameter&gt;')
FROM   dual

产出如下:

代码语言:javascript
复制
<parameter name="port">48677</parameter>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40281869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档