Oracle CLOB到XMLTYPE错误

时间:2018-03-01 22:02:47

标签: oracle clob xmltype xmltable nls-lang

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

  • NLS_CHARACTERSET是'US7ASCII'
  • NLS_LENGTH_SEMANTICS是'BYTE'

问题...... 我们在CLOB列中存储了格式良好的XML。在尝试提取XML Element数据时,我使用的语法如

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

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

这很好用,通常是

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

enter image description here

例如,如果以下文字

......“违规”......

在CLOB中的任何地方都找到了

我在运行此查询时会遇到上述错误。

左引号是x201C,右边是x201D,它们分别作为&#x201C和&#x201D存储为xml中的简单ascii。

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

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

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

谢谢,

sse

0 个答案:

没有答案