如何在Amazon RDS PostgreSQL中加载自定义unaccent规则?
在Amazon RDS PostgreSQL中自定义德语变音符号的Unaccent映射规则
因为Amazon RDS没有文件系统访问权限,无法替换默认的unaccent.rules文件,你可以通过创建自定义PL/pgSQL函数来实现符合德语习惯的变音符号映射(Ü→UE、ü→ue、Ö→OE、ö→oe、Ä→AE、ä→ae),具体步骤如下:
1. 创建自定义德语Unaccent函数
执行以下SQL创建函数,该函数先替换德语变音符号,再调用原生unaccent处理其他可能的重音字符:
CREATE OR REPLACE FUNCTION german_unaccent(text) RETURNS text AS $$ BEGIN RETURN unaccent( replace( replace( replace( replace( replace( replace($1, 'Ü', 'UE'), 'ü', 'ue' ), 'Ö', 'OE' ), 'ö', 'oe' ), 'Ä', 'AE' ), 'ä', 'ae' ) ); END; $$ LANGUAGE plpgsql IMMUTABLE;
标记为IMMUTABLE可提升查询性能,PostgreSQL会缓存函数结果。
2. 在查询中使用自定义函数
替换原查询中的unaccent为german_unaccent即可:
SELECT * FROM students WHERE german_unaccent(name) ILIKE german_unaccent('Muel%');
测试验证
执行以下语句验证映射效果:
SELECT german_unaccent('Müller'); -- 返回 Mueller SELECT german_unaccent('Österreich'); -- 返回 Oesterreich SELECT german_unaccent('Äpfel'); -- 返回 Aepfel
内容的提问来源于stack exchange,提问作者Александар Стјепановић
相关产品推荐
相关产品推荐

