我收到:
尝试执行时:
select extractValue(
XMLType(
replace(myxmlcolumn,CHR(0),''
)
), '/xpath/to/data'
)
foo,bar,foobar
from sch.tab
WHERE cond='cond'
“myxmlcolumn”当然是CLOB数据类型,但包含XML。如果我没有对NULL执行replace(),那么这个错误就有意义了。那和错误是间歇性的(可能与我的条款匹配)。如果在XML转换之前应该替换它,将如何报告null?
10g企业版10.2.0.5.0版,Toad for Oracle专业版10.6.1.3
编辑: - 也尝试用'H'替换以证明它没有插入NULL(同样的错误) - 也试过替换(myxmlcolumn,'\ n',''以防它不喜欢chr(0)(同样的错误)
答案 0 :(得分:1)
搜索LPX-00230
的My Oracle Support,这看起来像Bug 9871430。
(我发布了更多详情,但我认为我们不应该从该网站分享信息。)
答案 1 :(得分:1)
这不是一个优雅的解决方案,我觉得有点脏。从@jonearles回答它看起来像一个已知的bug。简单的解决方案是 NOT 甚至尝试转换为XML。希望不需要高级xpath,在我的情况下它不是。
Select dbms_lob.substr(myxmlcolumn, 10, dbms_lob.instr(myxmlcolumn,'<data>') + 6)
“data”是我追求的元素,它总是保持一个10长的值,并且是该元素的第一个也是唯一一个出现所以...我很幸运。