我有一个表artists
,其名称列中有一条值为“Miró”的记录。当我提出这个要求时:
SELECT "artists".* FROM "artists" WHERE name = 'Miró'
我有一个结果,所以它有效。
现在,当我做这个请求时(没有特殊的ó
):
SELECT "artists".* FROM "artists" WHERE name = 'Miro'
我什么也没找到。我想忽略特殊字符。有没有办法做到这一点?
我有postgres 9.1.9。
我有一个表artists
,其名称列中有一条值为“Miró”的记录。当我提出这个要求时:
SELECT "artists".* FROM "artists" WHERE name = 'Miró'
我有一个结果,所以它有效。
现在,当我做这个请求时(没有特殊的ó
):
SELECT "artists".* FROM "artists" WHERE name = 'Miro'
我什么也没找到。我想忽略特殊字符。有没有办法做到这一点?
我有postgres 9.1.9。
对于更有针对性的模式匹配,您可以使用unaccent()
附加模块unaccent提供的函数:
SELECT * FROM artists WHERE unaccent(name) = 'Miro';
为了加快速度,请创建一个功能索引。你必须克服功能只有STABLE
,没有的障碍IMMUTABLE
。我最近写了一个包含说明(包括安装)和链接的综合答案:
PostgreSQL 是否支持“不区分重音”排序规则?
您可以尝试使用 LIKE 代替...
SELECT "artists".* FROM "artists" WHERE name like 'Mir%'