我有一个名为artists的表,在name列中有一个值为'Miró'的记录。当我提出这个要求时:

SELECT "artists".* FROM "artists" WHERE name = 'Miró'

我只有一个结果,所以有效。
现在,当我做这个请求时(没有特殊的ó):
SELECT "artists".* FROM "artists" WHERE name = 'Miro'

我什么也没找到。我想忽略特殊字符。有办法吗?
我有9.1.9的博士后。

最佳答案

对于更具针对性的模式匹配,可以使用附加模块unaccent提供的函数unaccent()

SELECT * FROM artists WHERE unaccent(name) = 'Miro';

要加快速度,请创建一个函数索引。你必须克服这个障碍,即功能只是STABLE,而不是IMMUTABLE。我最近写了一个全面的答案,包括安装说明和链接:
Does PostgreSQL support "accent insensitive" collations?

10-08 13:28