我在PostgreSQL数据库中有一个表,该表中的城市名称中带有西班牙口音。示例:San Quintín
。问题是我们有一些英语用户想要搜索这个城市,但是San Quintín === San QuintÃn !== San Quintin
我的解决方案是为搜索目的创建ascii_name列。是否可以复制一行的列并将其值转换为ASCII格式?
我尝试导出为CSV,但是找不到转换值的方法。
答案 0 :(得分:1)
Postgres(通常)与unaccent模块捆绑在一起,尽管默认情况下未安装。您可以将其用于不带重音符号的全文搜索,并且它还带有一个称为unaccent的功能。
CREATE EXTENSION IF NOT EXISTS UNACCENT;
select unaccent('San Quintín') = unaccent('San Quintin');
?column?
----------
t
由于不是所有非重音版本的字符都不是ASCII,因此不能保证结果为ASCII,但是我相信这会解决您的问题,甚至可能不需要额外的列。