You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除Oracle SQL查询结果中XML输出的Unicode特殊字符?

移除Oracle字符串中的Unicode特殊字符解决方案

从你提供的DUMP结果可以明确,字符串两侧的特殊字符是Unicode控制字符:

  • e2,80,ad 对应 U+202D(从左到右覆盖)
  • e2,80,ac 对应 U+202C(弹出方向格式)

之前使用CHR(8237)和CHR(8236)替换失效,是因为Oracle的CHR函数在AL32UTF8字符集下,对大于255的十进制值处理逻辑依赖字符集转换,无法准确生成多字节Unicode字符。以下是几种可靠的解决方法:

方法1:使用UNISTR精准替换目标Unicode字符

UNISTR函数可以直接通过Unicode码点生成对应字符,在AL32UTF8环境下更可靠:

SELECT 'H' KEY,
       REPLACE(REPLACE(LN.VENDOR_PRODUCT_NUM, UNISTR('\202D'), ''), UNISTR('\202C'), '') vendor_catalog_number
FROM MyTable

方法2:正则表达式批量移除非打印控制字符

如果存在其他类似的Unicode控制字符,可通过正则表达式只保留可打印字符:

SELECT 'H' KEY,
       REGEXP_REPLACE(LN.VENDOR_PRODUCT_NUM, '[^[:print:]]', '') vendor_catalog_number
FROM MyTable

如果只需要保留纯字母数字编号,可缩小匹配范围:

SELECT 'H' KEY,
       REGEXP_REPLACE(LN.VENDOR_PRODUCT_NUM, '[^A-Za-z0-9]', '') vendor_catalog_number
FROM MyTable

方法3:基于UTF-8字节序列直接替换

已知目标字符的UTF-8十六进制编码,可通过RAW转换后替换:

SELECT 'H' KEY,
       UTL_RAW.CAST_TO_VARCHAR2(
         REPLACE(REPLACE(RAWTOHEX(LN.VENDOR_PRODUCT_NUM), 'E280AD', ''), 'E280AC', '')
       ) vendor_catalog_number
FROM MyTable

内容的提问来源于stack exchange,提问作者Nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 15:12:42