oracle – PL / SQL转换特殊字符
发布时间:2020-12-12 13:14:55 所属栏目:百科 来源:网络整理
导读:我正在使用填充表中数据的简短PL / SQL函数创建一个简单的 XML 1.0文件. 表格中的数据还包含HTML字符,例如gt ;,等等. 对于这些特殊字符,我构建了一个简短的搜索和替换函数,如下所示: newXmlString := REPLACE(xmlString,'','amp;' ); newXmlString := REPLA
我正在使用填充表中数据的简短PL / SQL函数创建一个简单的
XML 1.0文件.
表格中的数据还包含HTML字符,例如<> ;,&等等. newXmlString := REPLACE(xmlString,'&','&' ); newXmlString := REPLACE(newXmlString,'','' ); newXmlString := REPLACE(newXmlString,'<','<' ); newXmlString := REPLACE(newXmlString,'>','>' ); newXmlString := REPLACE(newXmlString,'"','"' ); newXmlString := REPLACE(newXmlString,'''',''' ); 现在表中有更多数据会导致XML文件由于特殊控制字符(https://en.wikipedia.org/wiki/Control_character)而无法验证: > ETX(文字结束) 注意:并非每个控制字符都会破坏XML文件的验证!仍然可以进行换行或回车. 当然我现在也可以搜索和替换它们,例如: newXmlString := REPLACE(newXmlString,chr(3),'' ); -- ETX end of text 但是,是否有一个内置函数或类似于我可以与PL / SQL一起使用而不用列表和搜索替换它们的库? 更新1 我也尝试使用函数dbms_xmlgen.getxml但是这个函数抛出一个错误,因为’转义char转换失败的特殊字符’. 更新2 我尝试使用REGEXP_REPLACE(STRING_VALUE,'[[:cntrl:]]’),但这也会删除我们想要保留的换行符,也不会影响XML文件的验证. 解决方法TRANSLATE确实是要走的路.使用CHR函数构建一个字符串并仅应用一次.以下是ETX的示例:3,EOT:4和SYN:22.您可以在需要时附加其他人. 注意字符串开头的’a’作为第二个字符串中的唯一字符返回. FUNCTION clean_control( in_text IN VARCHAR2 ) RETURN VARCHAR2 IS v_search VARCHAR2( 30 ) := 'a' || CHR( 3 ) || CHR( 4 ) || CHR( 22 ); BEGIN RETURN TRANSLATE( in_text,v_search,'a' ); END; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |