如何复制一列城市名称并将西班牙口音转换为ASCII格式?

时间:2019-06-11 19:40:39

标签: postgresql utf-8 ascii

我在PostgreSQL数据库中有一个表,该表中的城市名称中带有西班牙口音。示例:San Quintín。问题是我们有一些英语用户想要搜索这个城市,但是San Quintín === San Quintín !== San Quintin

我的解决方案是为搜索目的创建ascii_name列。是否可以复制一行的列并将其值转换为ASCII格式?

我尝试导出为CSV,但是找不到转换值的方法。

1 个答案:

答案 0 :(得分:1)

Postgres(通常)与unaccent模块捆绑在一起,尽管默认情况下未安装。您可以将其用于不带重音符号的全文搜索,并且它还带有一个称为unaccent的功能。

CREATE EXTENSION IF NOT EXISTS UNACCENT;
select unaccent('San Quintín') = unaccent('San Quintin');
 ?column?
----------
 t

由于不是所有非重音版本的字符都不是ASCII,因此不能保证结果为ASCII,但是我相信这会解决您的问题,甚至可能不需要额外的列。