我有一个名为artists
的表,其名称列中包含值为'Miró'的记录。当我这样做时:
SELECT "artists".* FROM "artists" WHERE name = 'Miró'
我有一个结果,所以它有效。
现在,当我执行此请求时(没有特殊ó
):
SELECT "artists".* FROM "artists" WHERE name = 'Miro'
我什么都没发现。我想忽略特殊字符。有办法吗?
我有postgres 9.1.9。
答案 0 :(得分:4)
要获得更有针对性的模式匹配,您可以使用附加模块unaccent提供的 unaccent()
功能:
SELECT * FROM artists WHERE unaccent(name) = 'Miro';
要快速完成此操作,请创建功能索引。您必须克服该功能仅STABLE
而非IMMUTABLE
的障碍。我最近写了一份包含说明(包括安装)和链接的综合答案:
Does PostgreSQL support "accent insensitive" collations?
答案 1 :(得分:0)
您可以尝试使用LIKE ......
SELECT "artists".* FROM "artists" WHERE name like 'Mir%'