Problemas de acentuação / case sensitive no retorno do resultset do banco postgre

Ola galera.

Utilizo postgresql 8.02 com encoding utf-8, e ao efetuar um pesquisa no banco o mesmo está fazendo distinção de maiusculo / minusculo quando tenho acentuação.

EX: São Paulo / São Paulo / SÃO PAULO para o bco são informações diferentes.
Utilizo o drive JDBC postgresql-8.2-506.jdbc3.jar com aplicativo feito em java swing.

Alguem poderia me fornecer informações de como resolver este problema.

Grato,

o de maiuscula vc resolve colocando:

where upper(?) = upper(CAMPO)

agora pra tirar acento n lembro de cabeça

[]'s

Rafaelprp

Obrigado pela resposta, mas ainda continua com problema; segue a query para ficar mais explicito o meu problema.

select * from recurso where razaosocial ilike ‘% São Camilo %’.

A query me retorna apenas um registro, mas na verdade tenho 9 registro, vide abaixo.

“70010819”;“Centro Médico São Camilo Ltda”
“70012549”;“CLINICA DE FISIOTERAPIA SAO CAMILO S/C LTDA”
“70013979”;“DR. PEDRO CAMILO DE ALMEIDA PIMENTEL”
“70016841”;“SAO CAMILO ASSISTENCIA MEDICA”
“309850”;“HOSPITAL INFANTIL SAO CAMILO SC LTDA”
“409073”;“CLINICA DE FISIOTERAPIA SAO CAMILO S/C LTDA”
“303089”;“CENTRO MEDICO SAO CAMILO S/C LTDA”
“306207”;“JOSE CAMILO SANCHES BARIONI”
“903833”;“MILTON CAMILO RODRIGUES”

Quem tiver uma solução ou ideia de como resolver este problema, agradeço desde já.

Obrigado

O seu problema não é o banco e sim o que você quer fazer dele. O banco não é adivinho, então sua busca por ‘%São Camilo%’ não está errada, ele retorna os dados corretamente. Para resolver os problemas de caixa, já mostraram a função UPPER(), mas um jeito mais agradável de se fazer é usando SIMILAR TO, algo como:

SELECT CAMPO FROM TABELA WHERE LOWER(TO_ASCII(CAMPO)) SIMILAR TO '%órFão%';

Ele vai procurar por todas as variantes, maiúsculas ou minúsculas, acentuadas ou não, no banco.

Caso precise fazer uma busca por cada palavra, acho mais simples (não melhor) fazer um split no String e dele fazer uma cláusula do where para cada palavra.

Até!

Sem contar que esse tipo de coisa pode ser muito lento em tabelas grandes. (Exemplo: procurar o nome SILVA na lista telefônica de São Paulo).

Dentro da medida do possível, se você vir um LIKE em uma cláusula SQL, veja se isso não pode ser resolvido com “full-text search”.

(Acho que isso é um módulo “contributed” na 8.0 mas faz parte do produto na 8.2).