Esta contribuição está participando do sorteio da Mochila Targus Matrix. Envie seu texto e participe você também, você contribui com outros usuários e ainda pode faturar uma mochila novinha em folha para o seu laptop. Saiba mais sobre como participar.
Sobre o Autor:
Anderson R. Livramento
Se a sua aplicação com Firebird permite que se entre com registros em mixedcase, como por exemplo João da Silva, a instrução:
select nome from tabela where upper(nome) like ‘%JOÃO%
não funciona corretamente, porque a função UPPER não reconhece os caracteres especiais e acentuados do idioma português.
select upper(‘João da Silva’) from tabela retorna:
JOãO DA SILVA
Pesquisando no knowledge base da fundação IBPhoenix[1], descobri que o comando COLLATE não era só para usar com ORDER BY, ele pode ser usado com outros comandos também. Então:
select nome from tabela where upper(nome collate {o collate que vc usa}) like ‘%JOÃO%’
Por exemplo, usando o character set WIN1252, e o collate pxw_intl850 (a combinação mais comum) ficaria assim:
select nome from tabela where upper(nome collate pxw_intl850) like ‘%JOÃO%’