我有一个名为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?