2

我有一个表artists,其名称列中有一条值为“Miró”的记录。当我提出这个要求时:

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

我有一个结果,所以它有效。

现在,当我做这个请求时(没有特殊的ó):

SELECT "artists".* FROM "artists" WHERE name = 'Miro'

我什么也没找到。我想忽略特殊字符。有没有办法做到这一点?
我有postgres 9.1.9。

4

2 回答 2

4

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

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

为了加快速度,请创建一个功能索引。你必须克服功能只有STABLE,没有的障碍IMMUTABLE。我最近写了一个包含说明(包括安装)和链接的综合答案:
PostgreSQL 是否支持“不区分重音”排序规则?

于 2013-06-18T21:22:20.333 回答
0

您可以尝试使用 LIKE 代替...

SELECT "artists".* FROM "artists" WHERE name like 'Mir%'
于 2013-06-18T21:14:29.873 回答