1

我们正在运行较旧的 Oracle 服务器,10.1.0.5...是的,我们将很快升级。一些相关的 NLS 设置如下...

  • NLS_CHARACTERSET 是 'US7ASCII'
  • NLS_LENGTH_SEMANTICS 是“字节”

关于问题...我们已经将格式良好的 XML 存储在 CLOB 列中。尝试提取 XML 元素数据时,我使用的语法如下

select XMLTYPE(I.CLOBFIELD).EXTRACT('/Record/RecordID/text()') as Record_ID
from iTable I

其中 I.CLOBFIELD 是包含一些 XML 的 CLOB。

这很好用,通常

当 CLOB 数据包含已使用“&#xxxx;”编码的非 ascii 数据时,我们有时会收到错误消息。

在此处输入图像描述

例如,如果以下文本

... “违反” ...

在 CLOB 中的任何地方都可以找到我在运行此查询时会收到上述错误。

左引号是 x201C,右引号是 x201D,它们在 xml 中以纯 ascii 形式存储,分别为 “ 和 ”。

像这样的标点符号已经悄悄进入我们的 CLOB 字段(主要来自用户从 ms-word 剪切和粘贴)。在某个时候,我们可能会在迁移时清理它们,但现在我们希望上述查询始终有效,即使在 CLOB 中找到这些 Unicode 等效项。

注意:如果可以的话,我会使用 XMLTABLE(..),但它在这个版本的 Oracle 中不可用。

欢迎提出 XMLTYPE 的建议或替代方案。

谢谢,

sse

4

0 回答 0