【发布时间】:2016-11-10 10:23:26
【问题描述】:
我有一个 XML SQL 语句,我正在使用(见 Oracle11g SQL 下文)来克服传递错误(如下),该 SQL 语句有效,但它确实删除了 REGEXP_REPLACE 语句中未指定的字符例如下面的É Ë È 需要包含在我的 XML 输出文件中,我可以包含这些以及更多内容,但是是否有一个捷径可以在 REGEXP_REPLACE 中包含这些字符,而无需命名一长串字符。我已经尝试过 SQL select DBMS_XMLGEN.CONVERT(T.title),因为有人告诉我这会删除所有无效字符,但这会失败,并出现与下面相同的解析错误。
我使用REGEXP_REPLACE 的原因是因为标题数据库字段中的某些字符(例如char(160) 不间断空格)而失败。
是否有更简单的解决方案,或者我必须在REGEXP_REPLACE 中包含一长串字符。
提前致谢。
DECLARE
*
ERROR at line:
ORA-31011: XML parsing failed
ORA-06512: at line 8
麻烦是因为我正在处理不同的角色
SELECT XMLAGG ( XMLELEMENT ("referenceAvGroup",
XMLFOREST (cre_surr_id AS "societySeriesNumber",
'SERIES' AS "avGroupType"),
XMLELEMENT ("prodTitle",
XMLFOREST (title AS "title",
tt_code_description AS "titleType")
)
)
)
FROM ( SELECT trim(REGEXP_REPLACE(T.title, '[^a-zA-Z0-9 ,!@():.#’"*&+}/\©{ÂÀÃÏÎÔ܀ǿ%´_$()'',-`]', '', 1, 0, 'i')) AS title,
'ORIGINAL' AS tt_code_description,
T.tt_code AS tt_codes,
T.cre_surr_id
FROM titles T
WHERE T.tt_code = Com0300.title_type_registered)
WHERE cre_surr_id = prod.prod_series_cre_surr_id
【问题讨论】:
-
维护一个要替换的字符列表可能更容易...
-
能否更新您的问题以包含复制您所看到问题的示例数据?
-
这个参数设置了什么? SELECT * FROM V$NLS_PARAMETERS where parametrer= 'NLS_NCHAR_CONV_EXCP'
-
看起来你的 XML 有很多问题; stackoverflow.com/questions/40493076/… 和 stackoverflow.com/questions/38877171/… 为什么你喜欢删除特殊字符?这不是问题的根源。
-
试试
UTL_I18N.ESCAPE_REFERENCE(title, 'us7ascii')