Postgresql 对非重音不敏感,对重音词敏感

Posted

技术标签:

【中文标题】Postgresql 对非重音不敏感,对重音词敏感【英文标题】:Postgresql accent insensitive for non-accent and sensitive for accent word 【发布时间】:2021-03-09 22:01:57 【问题描述】:

在 Postgresql 中如何使用 like/ilike 实现带和不带重音的单独搜索结果,如下所示:

记录名称为:cafe、cafe、cafeteria

如果我使用select name from cafe-table where name like '%cafe%';,那么结果将是cafe, café, cafeteria

但如果我选择%café%(带重音),我只想得到café

我已经尝试过unaccent,但它使 2 个查询的结果相同。

【问题讨论】:

... where (name ilike '%mask%') or (unaccent('mask') = 'mask' and unaccent(name) ilike '%mask%') 【参考方案1】:

您可以使用unaccent 模块:

安装:

CREATE EXTENSION unaccent;

那么您的查询可能如下所示:

SELECT name 
FROM cafe-table 
WHERE unaccent(name) like '%cafe%'; -- use unaccent here

【讨论】:

@Tino 这有帮助吗?请不要忘记对答案进行投票,以纪念回复者在您的问题上花费的时间。如果答案解决了您的问题,您应该另外接受:)

以上是关于Postgresql 对非重音不敏感,对重音词敏感的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Sqlite 中实现重音/变音符号不敏感搜索? [复制]

AWS Aurora MySQL 5.7.12 重音敏感排序规则

C - 如何避免变音符号/重音敏感问题

PostgreSQL 是不是支持“不区分重音”排序规则?

Android,变音符号不敏感 SQLite 搜索

SQLite unicode 斯拉夫重音词 Android