Nao diferenciar nas pesquisa em Oracle igual a Firebird

21/07/2008

0

No firebird uso um collete que nao diferencia nas pesquisas Strings com maiúsculo e minúsculo. Alguem sabe como fazer isso a nível do Oracle ?
Pesquisei na internet mas só encontrei que a solução é fazer UPPER, aí nesse caso eu teria que mudar todo o meu sistema... Se a unica solução for via Upper, alguem sabe se isso vai ficar mais lenta a pesquisa ?


Responder

Posts

22/07/2008

Brunodsr

A resposta é sim.

Quando vc usa uma função ao invés do próprio campo, os índices não são usados. Isso significa uma perda significativa de performance.

Se o seu campo não tem nenhum índice, então relaxa. Usa o UPPER mesmo.

Eu acho melhor vc tratar a nível de aplicação veio. Teus dados estão gravados em caixa alta ou aceita qualquer tipo de formatação?

Posta aí..


Responder

22/07/2008

Powerslave7

Pois é... O upper degrada a performance sim cara, mas é uma solução viável se for uma pesquisa simples... Se envolver um processamento maior (tipo uma pesquisa em loop), aí complica....

Mas o seu caso da pra resolver com isso:
  ´WHERE UPPER(campo) LIKE ´ + QuotedStr(UpperCase(Edit.Text) + ¬);


Meu caso é diferente e eu não sei se o Oracle faz isso.
Seguinte:
Existe como o Oracle tratar, por exemplo, ´O´ e ´Ó´ como iguais?
O MySQL eu sei que faz isso, mas o Oracle não... Ou eu acho que não...

Abraço!


Responder

22/07/2008

Mcd

Bruno,

Atualmente meus dados aceitam qualquer tipo de formatação, tanto maísculo como minúsculo e a base é muito grande,,, existe um índice para esse campo que estou pesquisando, entao pela sua resposta fará um FULLSCAN... isso é pessimo... acho que vou mesmo é tratar na digitação e aproveitar o recurso de banco...


Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar