xml - 在 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
)
但仍然抛出同样的错误,我在这里做错了什么?
解决方案
推荐阅读
- android - 自动备份 Hive 数据库颤振
- python - 将 h:mm:ss 更改为 hh:mm:ss
- ios - 使用登录苹果将 iOS 应用程序转移到另一个帐户
- java - 如何在java中将单个地址行转换为三个地址行,例如地址行1,地址行2,地址行3
- javascript - Laravel API ajax 请求未通过身份验证
- python - 逻辑回归结果没有截距值?
- mysql - 我怎样才能获得必须与 SQL IN 匹配的最小给定 ID 的记录?
- typescript - 字符串类型的参数 | null 不能分配给类型字符串错误的参数
- c++ - 定义成员方法时使用类名范围两次
- javascript - 如何在javascript中使用正则表达式提取数组中代数表达式的系数和变量?