Postgres非常适合角色的功能

时间:2016-10-20 11:08:19

标签: postgresql unicode unaccent

我在Postgres中使用unaccent但它无法转换特殊字符,如: ù : ù
但是对ù: ù来说没问题 2个字符含义相同但代码不同,第一个字符是字符u +
我怎么能解决这个问题? 非常感谢你。

1 个答案:

答案 0 :(得分:2)

您的问题是unicode normalization,遗憾的是PostgreSQL does not do。而且你自己实施起来并不那么简单。

但是,因为您只想删除变音符号,所以您只需要实际删除unicode combining characters之前的代码点(在调用unaccent()函数之前或之后):

select regexp_replace(
  'ùù',
  '[\u0300-\u036F\u1AB0-\u1AFF\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]',
  '',
  'g'
)

应该这样做。