Silfar Goulart de Castro escreveu:
> Pessoal, eu sei que este assunto já foi bem debatido aqui, mas como
> perdi as minhas msgs eu vou colocar de novo.
>
> O grande debate era usar ou não Utf-8, bem em se tratando de
> padronização eu tb concordo em usar utf, mas aí estou esbarrando no
> seguinte:
>
> Select * from titular
> where to_ascii(nm_titular) ilike to_ascii('Júlio')
>
> aí eu srecebo o seguinte erro:
>
> "Encoding conversion from UTF8 to ASCII not supported.
>
> Só funciona se eu colocar o encoding do banco para latim.
>
> Preciso desta consulta porque tenho que buscar maiúscula, minúscula, com
> acento e sem acento, e ainda 'ç' etc....
>
>
> Alguem tem uma solução pra isso ?
>
Você pode usar algo do tipo:
bdteste=# SELECT to_ascii(convert('áéíóúàâêôãõuüç', 'LATIN1'), 'LATIN1');
to_ascii
----------------
aeiouaaeoaouuc
(1 registro)
ou, como sugerido por Martijn van Oosterhout (lista posgresql
GENERAL), use Perl:
CREATE FUNCTION unaccent(string text) RETURNS text AS $$
use Unicode::Normalize;
my $nfd_string = NFD($_[0]);
$nfd_string =~ s/[\p{Mn}\p{Me}]//g;
return NFC($nfd_string);
$$ LANGUAGE plperlu IMMUTABLE STRICT;
SELECT unaccent('ěščřžýáíé');
unaccent
-----------
escrzyaie
(1 row)
Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral