首页 > 解决方案 > 在 oracle 中使用 select 提取 xmltype 时出现无效字符

问题描述

所以我想使用这个代码从 xml 表中提取:

        SELECT
        DATE, EXTRACT(xmltype(REQ_DETAILS),'/FormManagementVO/SectionsList/Section/BasicFormFields/FormField[FormFieldId="accountNum"]/FormFieldValue/text()').getStringVal()accountDB 
WHERE DATE = '2021-05-28'

最后有一个条件只是过滤日期,但不知何故在一个给定的日期,我得到了一个错误,如:

ORA-19202 : Error occured in xml processing
LPX-00217 : invalid character 8 (U+0008)
Error at line 1
ORA-06512 : at "SYS.XMLTYPE", line 272

我试过使用:

DBMS_XMLGEN.CONVERT(REGEXP_REPLACE(EXTRACT(xmltype(REQ_DETAILS),'/FormManagementVO/SectionsList/Section/BasicFormFields/FormField[FormFieldId="ACC_NUMBER"]/FormFieldValue/text()').getStringVal(),'[^[:print:]]',''))

那说可以跳过无效字符,但它不起作用。因为我对此很陌生,所以我认为给提取物一个别名就可以了,假设我的语法有误,例如:

SEL DBMS_XMLGEN.COVERT(REGEXP_REPLACE(A.ACC_NUMBER,'[^[:print:]]',''))
FROM (
SEL EXTRACT(xmltype(REQ_DETAILS),'/FormManagementVO/SectionsList/Section/BasicFormFields/FormField[FormFieldId="ACC_NUMBER"]/FormFieldValue/text()').getStringVal() AS ACC_NUMBER
FROM xml_mytable
)

但仍然抛出同样的错误,我在这里做错了什么?

标签: xmloracle

解决方案


推荐阅读