Quando fazemos uma busca simples em um site, usamos 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 acentos, esta busca ignora a existência dos mesmos, não capturando os dados quando não informado o acento.
Utilizando a função abaixo serão capturadas todas as referências encontradas, independente se o usuário digitou ou não acentos 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) & "%'"