2009/3/11 [email protected] <[email protected]>:
> Também dá pra utilizar to_ascii
>
> select to_ascii('açucar é doce');
>    to_ascii
> ---------------
>  acucar e doce
> (1 row)
>
>
> http://pgdocptbr.sourceforge.net/pg80/functions-string.html
>


Não se esqueçam que a função to_ascii() só funciona com os encodings
LATIN1, LATIN2, LATIN9 e WIN1250.
Se, por ex., você estiver usando utf-8 uma solução é  usar o
translate, como nessa função:

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 conteúdo 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 outras línguas) não
tenho a menor ideia do comportamento esperado para esta função.

Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a