unaccent 是一个 contrib 模块,它提供了一个过滤字典,用于去除词语中的重音。
unaccent 在 PostgreSQL 9.0 中被添加。
用法
unaccent 提供了一个名为 unaccent() 的函数,在默认安装中,它可用于去除基于罗马字母的许多欧洲语言中常见的重音(变音符号)。
unaccent 是在 PostgreSQL 内置的 全文搜索 之上实现的,并且该扩展创建了一个文本搜索模板和字典。这使得提供自定义的去重音规则成为可能;有关更多详细信息,请参阅 文档。
内置函数 to_ascii() 提供了更简单、更有限的等效功能。
变更历史
- PostgreSQL 17
- 支持带引号的翻译字符已添加(提交 59f47fb9)
- PostgreSQL 13
- PostgreSQL 11
- 添加了越南语字符处理(提交 ec0a69e4)
- PostgreSQL 9.0
- 已添加(提交 92e05bc6)
示例
创建扩展
postgres=# CREATE EXTENSION unaccent; CREATE EXTENSION
这会创建一个名为“unacccent”的文本搜索字典;这里我们假设该扩展已安装在默认的 public schema 中。
postgres=# \dFd public.* List of text search dictionaries Schema | Name | Description --------+----------+------------- public | unaccent | (1 row)
基本用法
postgres=# SELECT unaccent('überbewertete äthiopische Ödnis');
unaccent
---------------------------------
uberbewertete athiopische Odnis
(1 row)
参考资料
- PostgreSQL 文档: unaccent
