PostgreSQL: função TO_ASCII em banco UTF-8

a função TO_ASCII no postgresql é muito util principalmente para buscas onde se quer ignorar acentos em string. Ela funciona bem quando o banco de dados estiver em LATIN1 por exemplo.

SELECT TO_ASCII('tchê'); -- retorna 'tche'

mas quando usamos ela em um banco UTF8 retorna o erro “conversão de condificação de UTF8 para ASCII não é suportada”.

Para contornar isso criei uma função SEM_ACENTO para usar no lugar da TO_ASCII.

CREATE OR REPLACE FUNCTION sem_acento(text)
RETURNS text AS
$BODY$
select
translate($1,'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ','aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcC');
$BODY$
LANGUAGE 'sql' IMMUTABLE STRICT;

2 Respostas para “PostgreSQL: função TO_ASCII em banco UTF-8”

  1. PostgreSQL: migrando de LATIN1 pra UTF-8 « Fábio Arezi diz:

    [...] use em seus SQL a função TO_ASCII, com UTF-8 ela não irã funcionar. Veja aqui a alternativa em um post passado que eu [...]

  2. PostgreSQL: migrando de LATIN1 pra UTF-8 « Fábio Arezi diz:

    [...] use em seus SQL a função TO_ASCII, com UTF-8 ela não irã funcionar. Veja aqui a alternativa em um post passado que eu fiz. Publicado em Desenvolvimento, Linux, PostgreSQL. Tags: converter, [...]


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.