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 中实现重音/变音符号不敏感搜索? [复制]