PUBLICIDADE
Este artigo tem nota
4,9

Autor

hugofg

Hugo Felipe

membro deste junho de 2008

Compartilhe e guarde

  • Rec6
  • StumbleUpon
  • ueba
  • linkk
  • dihitt
  • linkloko
  • linkto
  • Technorati
  • Simpy
  • del.icio.us
  • Faves: Fave It!

PUBLICIDADE

Enquete

Que linguagem server-side você utiliza?
sexta-feira, 23 de janeiro de 2009

Busca inteligente em ASP


Quando fazemos uma busca simples em um site, usmos o método padrão:

"SELECT * FROM tabela WHERE campo Like='%" & var_busca & "%'"


Esta busca captura os valores independente se maiúsculos ou minúsculos.
Mas, quanto há presença de ascentos, esta busca ignora a existencia dos mesmos, não capturando os dados quando não informado o ascento.

Utilizando a função abaixo serão capturadas todas as referências encontradas, independente se o usuário digitou ou não ascentos na busca:

<%
Function busca_inteligente(str)
Dim v
v = lcase(str)
v = Replace(v,"%","")
v = Replace(v,"'","")
v = Replace(v,"""","")
v = replace(v, "ó" , "o")
v = replace(v, "ò" , "o")
v = replace(v, "ô" , "o")
v = replace(v, "õ" , "o")
v = replace(v, "ö" , "o")
v = replace(v, "á" , "a")
v = replace(v, "à" , "a")
v = replace(v, "â" , "a")
v = replace(v, "ã" , "a")
v = replace(v, "ä" , "a")
v = replace(v, "é" , "e")
v = replace(v, "è" , "e")
v = replace(v, "ê" , "e")
v = replace(v, "ú" , "u")
v = replace(v, "ù" , "u")
v = replace(v, "û" , "u")
v = replace(v, "ü" , "u")
v = replace(v, "í" , "i")
v = replace(v, "ì" , "i")
v = replace(v, "ç" , "c")
v = replace(v,"a","[a,á,à,ã,â,ä]")
v = replace(v,"e","[e,é,è,ê]")
v = replace(v,"i","[i,í,ì]")
v = replace(v,"o","[o,ó,ò,õ,ô,ö]")
v = replace(v,"u","[u,ú,ù,û,ü]")
v = replace(v,"c","[c,ç]")
v = replace(v,"'","['']")
Prepara_busca = v
End Function
%>


Desta forma, a instrução ficaria:

"SELECT * FROM tabela WHERE campo Like='%" & busca_inteligente(var_busca) & "%'"
Sim   Não   Este artigo foi útil para você?
NotaComentário
8
usertop comentou em 22/10/2009

Bem util

Valeu tinha muitas duvidas sobre isso algumas forao bem esclarecidas
1
charleshba comentou em 10/9/2009

REPLACE

Sobre a substituição feita usando o método REPLACE, não deu pra entender o seguinte:

v = replace(v,"a","[a,á,à,ã,â,ä]")

O que é "a" vai virar: "[a,á,à,ã,â,ä]" ?????? o_O
1
charleshba comentou em 10/9/2009

Função não funciona

Outro ponto sobre essa função é que ela NÃO FUNCIONA da forma como escrita, não retorna nenhum valor. Para funcionar a linha no final da função:

Prepara_busca = v

deve ser alterada para:

busca_inteligente = v
1
charleshba comentou em 10/9/2009

Útil em DB Access

Como é usado percento no LIKE vejo que está usando uma base MySQL que por sua vez não é necessária a utlização da função, pois o MySQL não diferencia acentuação e nem captalização na consulta LIKE. OBS: No Access utiliza-se asterisco ao invés de porcento
1
charleshba comentou em 10/9/2009

Útil em DB Access

Conforme SQL proposto usando % no LIKE vejo que está se utilizando uma base MySQL que por sua vez não é necessária a utlização da função, pois o MySQL não diferencia acentuação e nem captalização na consulta LIKE. OBS: No Access utiliza-se * ao invés de %
1
charleshba comentou em 10/9/2009

"Útil" em DB Access

Conforme SQL proposto usando % no LIKE vejo que está se utilizando uma base MySQL que por sua vez não é necessária a utlização da função, pois o MySQL não diferencia acentuação e nem captalização na consulta LIKE. OBS: No Access utiliza-se * ao invés de %
Regras:
Os comentários seguem as seguintes regras:
  • Todos os comentários são enviados por membros cadastrados no site.
  • A pontuação de comentários de conteúdo do próprio membro não serão computados.
  • Os comentários serão pré-aprovados, porém a equipe do site revisará o conteúdo de todos os comentários podendo ser invalidados (inclusive a pontuação).
  • Os comentários precisam ter, obrigatóriamente, coerência sobre o conteúdo que será comentado.
  • O membro que atingir 5 comentários invalidados não poderá mais comentar dentro do site. Com isso o membro não poderá mais ganhar pontos com comentários.
  • Há um limite de 10 comentários por dia para cada membro.
  • Qualquer comentário após ter sido publicado poderá ser retirado através da opção ( denunciar)

Comente

     (ainda não tem cadastro? clique aqui!)


Máximo de 30 caracteres

Máximo de 255 caracteres
 

R&W Consulting - Soluções Web Hospedagem UOL HOST PagSeguro - solução para pagamentos online
© 2006-2009 R&W Informática Ltda. - Todos os direitos reservados.