Descrição:
PostgreSQL 9.3
Corda:'ì ằ ú ề'
Resultado desejado: 'i a u e'
Meu código:
select translate ('ì ằ ú ề', 'ìằúề', 'iaue') ; -- it works. Result: i a u e
Pergunta:
Se eu usar dessa forma, tenho que definir uma tradução manual entre 'ìằúề' e 'iaue'. Existe uma solução melhor?
Ref: Documento PG
Uso
unaccent()
fornecido pelo módulo adicional unaccent .Detalhes:
Melhorias substanciais foram feitas no Postgres 9.5 :
Regras personalizadas
Se você editar as regras padrão (como você comentou), quaisquer atualizações (ou novas compilações, se você mesmo compilar) substituirão suas alterações manuais. Certifique-se de fazer um backup do conjunto de regras original e editado imediatamente.
A
unaccent()
função está sobrecarregada . Enquanto a forma simples usa o dicionário padrão'unaccent'
:Você pode escolher um dicionário separado com o formulário de 2 parâmetros:
Eu consideraria não alterar o conjunto de regras padrão ( como instruído no link em seu comentário ), mas instalar seu conjunto de regras adicionalmente com um nome personalizado. Desta forma, você mantém o comportamento padrão, que recebe todas as atualizações automaticamente, e pode ver claramente em seu código onde aplica seu conjunto de regras alternativo / estendido. Siga as instruções do manual ou considere este blog .
E considere meu link acima para uso em índices ou outros contextos onde você precisa que a função seja imutável.