sexta-feira, 28 de outubro de 2011

Problemas com o case sensitive do Firebird.

Hoje estava procurando algumas coisas sobre o comando INNER JOIN no Firebird e achei muitas pessoas com dúvida sobre este problema.
No Firebird, este problema pode ser resolvido facilmente usando o comando UPPER, como proceder?
Simples…
Imagine uma situação assim:
Tabela contatos:

Campo Valor
Nome José
Apelido

 Queremos selecionar este contato, mas podemos ter um usuário preguiçoso que vai digitar o seguinte na consulta:
SELECT * FROM contatos WHERE Nome=‘josé’ AND Apelido=‘zé’;

O que esta consulta retornará no Firebird?

Nada… Pois ele é case-sensitive, ou seja, José é diferente de jOsé que é diferente de josé… Ele diferencia letra maiúscula de letra minúscula.

Vamos resolver este problema?

SELECT * FROM contatos WHERE UPPER(Nome)=UPPER(‘José’) AND UPPER(Apelido)=UPPER(‘zé’);

A consulta retornará os valores que queríamos.

O que este comando faz?

Ele vai converter todos os caracteres do campo selecionado em UPPER() para maiúsculos e na string de comparação idem. No nosso caso ele converteu a string original que era José para JOSÉ e a string de consulta que era josé para JOSÉ, o mesmo para Zé e zé.

Deste jeito, você consegue “burlar” o problema de sensibilidade a caixa do
Firebird, espero ter ajudado.

Até a próxima.

0 comentários:

Postar um comentário