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

Responder a