Silfar Goulart escreveu: > Bem resumindo: > > select to_ascii('CRÉD', 'LATIN1') > > Se o server_encoding for win1252 retorna 'CRED' > Mas se o server encoding for UTF8 retorna 'CRA D', Neste caso deveria se > usar a função convert : > > select to_ascii(convert('CRÉD', 'utf8', 'LATIN1'), 'latin1'), mas aí > acontece um erro, pq to_ascii espera um tipo texto e convert agora > retorna bytea. > > Aí não sei como resolver, acho que esta mudança deve ter acontecido no 8.3. >
Por quê você não vai por um caminho mais simples e utiliza uma função do tipo: CREATE OR REPLACE FUNCTION sem_acento(text) RETURNS text AS $$ SELECT translate($1, 'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ', 'aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcC'); $$ LANGUAGE SQL IMMUTABLE RETURNS NULL ON NULL INPUT; Repare que não estão contemplados todos os caracteres acentuados (creio que os do português estão), mas, aí, é só uma questão de complementar as listas acima (caracteres acentuados e os correspondentes não acentuados). Dependendo do conteudo de seu banco de dados pode ser que você necessite tratar, por ex. o n com til, s com cedilha, os com caron (um circunflexo invertido), os com barra etc. Se você utilizar árabe, hangul ou chinês (entre outros) não tenho a menor idéia do comportamento esperado para esta função. Osvaldo _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral