You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Oracle XMLTYPE中正确获取&符号值?

解决Oracle XMLType中包含&符号的问题

这问题我之前用SQLPlus时也踩过坑!核心原因是**Oracle的SQL客户端(比如SQLPlus、SQL Developer命令行模式)会把&当成变量替换的标记**,所以你才会弹出输入窗口——这和XML本身的转义规则是两回事,得两步走解决:

第一步:关闭客户端的变量替换功能

先执行这条命令,让客户端不再把&识别为变量占位符:

SET DEFINE OFF;

第二步:使用正确的XML转义写法

XML语法规定&必须转义为&,这样XMLType才能正确解析并最终输出为&。执行下面的查询:

SELECT XMLType('<root> <TPL> <fld>f7</fld><val>v1&amp;v2</val> </TPL> </root>') FROM dual;

执行后你就能得到预期的输出:

<root> <TPL> <fld>f7</fld><val>v1&v2</val> </TPL> </root>

为什么之前的写法不对?

  • 第一种v1&amp;amp;v2是转义了两次,相当于把&amp;又转义了一遍,最终会显示&amp;而不是&
  • 第二种用''&''的方式是用来处理字符串中单引号的,对&的变量替换问题完全没用,还会让XML里多出不必要的单引号

替代方案(不全局关闭DEFINE)

如果你不想全局关闭变量替换,可以开启转义符,用\来转义&:

SET ESCAPE ON;
SELECT XMLType('<root> <TPL> <fld>f7</fld><val>v1\&amp;v2</val> </TPL> </root>') FROM dual;

不过这种方式不如直接关闭DEFINE来得直观。

内容的提问来源于stack exchange,提问作者vikky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:27:19