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

Teradata 16.20中识别替换不可转译字符的内置函数求助

Teradata 16.20 SET LATIN表特殊字符替换报错解决方案

在Teradata 16.20版本中,当表采用SET LATIN字符集定义时,执行REGEXP_REPLACE处理含不可转译特殊字符的字符串会触发6706错误:

执行语句:

SELECT REGEXP_REPLACE('=H�4l3B7' ,'[^0-9a-zA-Z]' ,' ');

错误提示:

Failed [6706 : HY000] The string contains an untranslatable character

尝试以下语句仍无法解决问题:

SELECT REGEXP_REPLACE('=H�4l3B7' ,'[^0-9a-zA-Z]' ,' ');
select regexp_replace('=H�4l3B7', '[^0-9a-z]', '', 1, 0, 'i')

可行的Teradata内置函数解决方案

方案1:使用TRANSLATE+OTRANSLATE直接过滤(推荐)

利用OTRANSLATE提取所有合法字符,再用TRANSLATE移除其余字符,无需字符集转换:

SELECT TRANSLATE('=H�4l3B7', '', OTRANSLATE('=H�4l3B7', '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'));

该语句会保留字符串中的数字和大小写字母,自动移除包括不可转译字符在内的所有其他字符。

方案2:转换字符集后用REGEXP_REPLACE处理

先将字符串转换为UNICODE字符集(可兼容特殊字符),执行正则替换后再转回LATIN:

SELECT CAST(REGEXP_REPLACE(CAST('=H�4l3B7' AS VARCHAR(100) CHARACTER SET UNICODE), '[^0-9a-zA-Z]', ' ') AS VARCHAR(100) CHARACTER SET LATIN);

通过字符集转换规避LATIN对特殊字符的转译限制,完成替换后还原原字符集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:24:31