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

Redshift SQL查询需求:系统移除人名中的重音、变音符号等特殊字符

Redshift SQL批量移除重音、变音符号及特殊字符方案

Redshift没有像SQL Server那样通过COLLATE直接去除重音的原生支持,要系统性统一处理带重音的人名(比如François转Francois、ñ转n),可以用以下两种实用方法:

方法1:直接使用TRANSLATE函数做字符映射

通过TRANSLATE函数建立带重音字符与对应无重音字符的映射表,一次性替换所有目标字符:

SELECT
    t1.name AS name_with_accents,
    t2.name AS name_without_accents,
    -- 统一标准化人名
    TRANSLATE(
        t1.name,
        'áàâäãåéèêëíìîïóòôöõúùûüñçÁÀÂÄÃÅÉÈÊËÍÌÎÏÓÒÔÖÕÚÙÛÜÑÇ',
        'aaaaaaeeeeiiiiooooouuuuncAAAAAAEEEEIIIIOOOOOUUUUUNC'
    ) AS normalized_name_t1,
    TRANSLATE(
        t2.name,
        'áàâäãåéèêëíìîïóòôöõúùûüñçÁÀÂÄÃÅÉÈÊËÍÌÎÏÓÒÔÖÕÚÙÛÜÑÇ',
        'aaaaaaeeeeiiiiooooouuuuncAAAAAAEEEEIIIIOOOOOUUUUUNC'
    ) AS normalized_name_t2
FROM table_with_accents t1
JOIN table_without_accents t2
    ON TRANSLATE(t1.name, 'áàâäãåéèêëíìîïóòôöõúùûüñçÁÀÂÄÃÅÉÈÊËÍÌÎÏÓÒÔÖÕÚÙÛÜÑÇ', 'aaaaaaeeeeiiiiooooouuuuncAAAAAAEEEEIIIIOOOOOUUUUUNC') 
    = TRANSLATE(t2.name, 'áàâäãåéèêëíìîïóòôöõúùûüñçÁÀÂÄÃÅÉÈÊËÍÌÎÏÓÒÔÖÕÚÙÛÜÑÇ', 'aaaaaaeeeeiiiiooooouuuuncAAAAAAEEEEIIIIOOOOOUUUUUNC');

优缺点

  • 优点:无需创建额外数据库对象,写法直接,适合临时查询或一次性处理场景。
  • 缺点:需要手动覆盖所有可能的重音字符,若遇到少见的Unicode特殊字符,需自行扩展映射表的字符对。

方法2:封装自定义标量函数(推荐频繁使用场景)

将字符映射逻辑封装成自定义函数,方便重复调用,后续维护也更便捷:

-- 创建去重音函数
CREATE OR REPLACE FUNCTION fn_remove_accents(input_text VARCHAR)
RETURNS VARCHAR
IMMUTABLE
AS $$
BEGIN
    RETURN TRANSLATE(
        input_text,
        'áàâäãåéèêëíìîïóòôöõúùûüñçÁÀÂÄÃÅÉÈÊËÍÌÎÏÓÒÔÖÕÚÙÛÜÑÇ',
        'aaaaaaeeeeiiiiooooouuuuncAAAAAAEEEEIIIIOOOOOUUUUUNC'
    );
END;
$$ LANGUAGE plpgsql;

调用函数实现标准化:

SELECT
    t1.name AS name_with_accents,
    t2.name AS name_without_accents,
    fn_remove_accents(t1.name) AS normalized_name_t1,
    fn_remove_accents(t2.name) AS normalized_name_t2
FROM table_with_accents t1
JOIN table_without_accents t2
    ON fn_remove_accents(t1.name) = fn_remove_accents(t2.name);

优缺点

  • 优点:代码复用性高,调用简洁,后续需要新增字符映射时,只需修改函数内容即可。
  • 缺点:需要有数据库对象创建权限,首次使用需执行函数创建语句。

补充说明

如果需要处理更多特殊字符(比如德语的ß转ss、法语的œ转oe等),只需在TRANSLATE的字符映射串中添加对应的字符对即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 02:45:29