Olá Danilo,

Outra opção é criar uma function sem_acento (listada abaixo) é usar a mesma.

DROP FUNCTION IF EXISTS sem_acento(text);

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

Exemplo usando a function

        SELECT cidade
                  , uf
          FROM municipios
         WHERE sem_acento(cidade) ILIKE sem_acento('%são%')
             ;

        SELECT cidade
                 , uf
      FROM municipios
         WHERE sem_acento(cidade) ILIKE sem_acento('%sao%')
             ;

Caso não queira usar a function poderia usar o translate ao invés da
function, não fica muito elegante, mas fica funcional:

Exemplo sem usar function

        SELECT cidade
             , uf
          FROM municipios
         WHERE 
translate(cidade,'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ','aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcC')
         ILIKE 
translate('%sao%','áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ','aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcC')
             ;
                
Existe várias formas...

Espero ter ajudado.

Emerson Hermann
                

Em 9 de agosto de 2011 10:06, Danilo Silva
<[email protected]> escreveu:
> Tenho uma coluna do tipo texto que contém letras maiúsculas, minúsculas, com
> e sem acentos.
> Existe alguma forma ou função efetuar uma busca desses registros
> independentemente da forma como foi inserido no banco?
> Exemplo, se for digitado SELECT cidade,uf FROM municipios WHERE (cidade LIKE
> '%sao%') ou SELECT cidade,uf FROM municipios WHERE (cidade ILIKE '%sao%')
> essa consulta retornar:
>
>           cidade        | uf
> ------------------------+----
>  São Mateus             | ES
>  São Mateus do Maranhão | MA
>  São Mateus do Sul      | PR
> (3 rows)
>
> Retorna campos com e sem acentos, maiúsculos ou minúsculos.
>
>
> Att.
>
> Danilo
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a