我们正在运行较旧的Oracle Server,10.1.0.5 ......是的,我们很快就会升级。 一些相关的NLS设置如下......
问题...... 我们在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数据时,我们有时会收到错误。
例如,如果以下文字
......“违规”......
在CLOB中的任何地方都找到了我在运行此查询时会遇到上述错误。
左引号是x201C,右边是x201D,它们分别作为&#x201C和&#x201D存储为xml中的简单ascii。
像这样的标点符号已经渗透到我们的CLOB字段中(主要来自用户剪切和粘贴ms-word)。在某些时候我们会清理它们,可能是在我们迁移时,但是现在我们希望上面的查询始终有效,即使在CLOB中找到这些Unicode等价物。注意:如果可以,我会使用XMLTABLE(..),但在此版本的Oracle中不可用。
欢迎XMLTYPE的建议或替代方案。
谢谢,
sse