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

Redshift替换特殊Unicode字符:无法移除U202C及过滤非字母数字方法

问题1:移除特殊字符\u202C不生效的排查结果

Redshift的regexp_replace函数默认使用POSIX正则语法,不支持直接识别\uXXXX格式的Unicode码点表示,你写的[\u202C]会被解析为普通字符\、u、2、0、2、C的匹配集合,自然无法匹配到U+202C这个不可见控制字符。
正确写法是通过CHR函数生成对应Unicode字符再匹配,U+202C的十进制码值为8236,修改后SQL如下:

SELECT regexp_replace('race‬', CHR(8236)), len(regexp_replace('race‬', CHR(8236)))

执行后可以看到返回字符串长度为4,说明控制字符已被成功移除。

问题2:通用过滤所有非字母、非数字字符的方案

直接使用POSIX字符类[:alnum:]匹配所有字母、数字,反向匹配所有非字母数字字符替换为空即可,语法如下:

-- 替换<目标字段>为你要处理的字段名,<表名>替换为实际表名
SELECT regexp_replace(<目标字段>, '[^[:alnum:]]', '') AS cleaned_str FROM <表名>;

如果需要额外保留指定字符(如下划线、横线等),直接在中括号内补充对应字符即可,例如下方写法会额外保留下划线:

SELECT regexp_replace(<目标字段>, '[^[:alnum:]_]', '') AS cleaned_str FROM <表名>;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:54:06