字符的 Postgres unaccent 函数
Postgres unaccent function for character
我在 Postgres 中使用 unaccent 但它无法转换特殊字符,例如:
ù : ù
但 ù: ù
没关系
2个字同义码不同,第一个是字u + ̀
我该如何解决这个问题?
非常感谢。
很遗憾,您的问题是 unicode normalization, what PostgreSQL does not do。而且自己实现起来也不是那么简单。
但是,因为您只想删除变音符号,所以您只需要实际删除代码点(在调用 unaccent()
函数之前或之后),即 unicode combining characters:
select regexp_replace(
'ùù',
'[\u0300-\u036F\u1AB0-\u1AFF\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]',
'',
'g'
)
应该可以解决问题。
我在 Postgres 中使用 unaccent 但它无法转换特殊字符,例如:
ù : ù
但 ù: ù
没关系
2个字同义码不同,第一个是字u + ̀
我该如何解决这个问题?
非常感谢。
很遗憾,您的问题是 unicode normalization, what PostgreSQL does not do。而且自己实现起来也不是那么简单。
但是,因为您只想删除变音符号,所以您只需要实际删除代码点(在调用 unaccent()
函数之前或之后),即 unicode combining characters:
select regexp_replace(
'ùù',
'[\u0300-\u036F\u1AB0-\u1AFF\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]',
'',
'g'
)
应该可以解决问题。