Carlos Rocha Postado Março 18, 2005 Denunciar Share Postado Março 18, 2005 O comandoSql Like '%"&variavel"&%'Faz pesquiza por toda a fraze ou palavra digitada certo?Como faço como por exemplo para no caso da frase:E no apartamento da madame usando o comando for do asp do asp, entrara no loop as pesquizase, no, apartamento, da, madameO que eu preciso, é que a pesquiza não seja feita quando encontrar caracters comoe, no, da,Isso tem geito Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Cerebro Postado Março 18, 2005 Denunciar Share Postado Março 18, 2005 então coloca uma limitação em sua caixa de texto onde se digita a palavra chave... coloque uma limitação de 4 digitos minimos... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest - André - Postado Março 25, 2005 Denunciar Share Postado Março 25, 2005 sua dúvida não ficou muito clara:primeiro você quer dividir a string, depois pesquisar as outra partes?Tem como sim, mas expôe melhor seu problema, pra desenvolvermos um script pra você.[]´s Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Março 25, 2005 Autor Denunciar Share Postado Março 25, 2005 (editado) Tenho uma FAQ no meu site.To fazendo um sistema de busca que sera feita da seguinte forma:No campo de busca a pessoa digita uma frase que é a sua duvida, dai, é feita uma busca nos campos pergunta e resposta da tabela, porem tem que ser uma busca por aproximação, para que a pessoa não seja obriogada a descobrir exatamente como estão digitadas as perguntas e respostas no nosso banco certo?Porem, eu tive a ideia de dividir a frase numa matriz em que cada palavra da frase sera uma opção de busca, dai vem as minhas dificudades,Se a pessoa digitar uma frase em que uma mesma palavra é escrita duas vezes, por exemplo -- Como fazer como o João Fez?(temos que imaginar o usuario fazendo de tudo, certo?)Nesse caso, a palavra como gerará uma consulta em duplicvidade e por conseguinte uma impressão em duplicidade do mesmo tópico.E é isso que quero resolver.Abaixo, segue meu código, se tiver tempo e puder me ajudar nessa, desde já estou agradecendo.Foi o que eu consegui. <% If REQUEST.QUERYSTRING("action") = "consultar" then Dim busca, onde, pesq, sql, x, strSQL, Rs_SELECT, bg, DfId, DesenharTabela, cor, Rs_FaqSelectModulo, ModuloNome 'Declara as variaveis. Dim laco, buscadas, considera, palavra, palavra2, pergunta DesenharTabela = False busca=trim(request.form("chave")) laco=split(busca,chr(32)) x = 0 considera = true buscadas = array() for each palavra in laco if x > 0 then for each palavra2 in buscadas if palavra = palavra2 then considera = false end if next if considera = true then redim preserve buscadas(Ubound(buscadas)+1) buscadas(Ubound(buscadas)) = palavra end if else redim preserve buscadas(Ubound(buscadas)+1) buscadas(Ubound(buscadas)) = palavra x = x + 1 end if considera = true next for each palavra in buscadas ' palavra=busca(x) 'Entrega à variavel palavra, cada uma das palavras em separado para fazer a busca palavra = replace(palavra,"a","[a,á,à,ã,â,ä,A]") 'Trata as palavras acentuadas como que sem acento ou com acenmto palavra = replace(palavra,"e","[e,é,è,ê,ë,E]") palavra = replace(palavra,"i","[i,í,ì,î,ï,I]") palavra = replace(palavra,"o","[o,ó,ò,õ,ô,ö,O]") palavra = replace(palavra,"u","[u,ú,ù,û,ü,U]") palavra = replace(palavra,"c","[c,ç]") onde="DfPergunta like '%"&palavra&"%' or DfMemo like '%"&palavra&"%' " 'String Sql busca letra por letra ' onde="DfPergunta like '"&pesq&"' or DfMemo like '"&pesq&"' " 'String Sql busca palavra por palavra 'Cria o Select strSQL = "select * from tbFaq where " & onde & "" Set Rs_SELECT = server.createobject("ADODB.Recordset") Rs_SELECT.Open strSQl,Conn , 3, 3 if not Rs_SELECT.eof = true then 'Tem registros, cria o laço para impressão no laço for if DesenharTabela = False then 'Criando desenho tabela response.Write "<br><p>" response.Write "<table border='0' width=95% align=center cellspacing='1', cellpading='2'>" response.Write "<tr bgcolor=#8193A7>" response.Write "<td width=50 align=center height=20><font color=#FFFFFF><b>ID</b></fonte></td>" response.Write "<td width=70 align=center height=20><font color=#FFFFFF><b>Modulo</b></fonte></td>" response.Write "<td width=320 align=center height=20><font color=#FFFFFF><b>Pergunta</b></fonte></td>" response.Write "<td width=100 align=center height=20><font color=#FFFFFF><b>Autor</b></fonte></td>" response.Write "<td width=100 align=center height=20><font color=#FFFFFF><b>Visualizar</b></fonte></td>" response.Write "</tr>" DesenharTabela = True End if dim faq_id, faq_modulo, faq_autor, faq_pergunta Do Until Rs_Select.EOF = True faq_id = Rs_SELECT("DfId") faq_modulo = Rs_SELECT("DfModulo") faq_autor = Rs_SELECT("DfAutor") faq_pergunta = Rs_SELECT("DfPergunta") if (cor = 1) then bg = "#E8ECEE" cor = 2 else bg = "#d3dbde" cor = 1 end if strSQl = "select * from tbModulo where DfId = '"&faq_modulo&"'" Set Rs_FaqSelectModulo = server.createobject("ADODB.Recordset") Rs_FaqSelectModulo.Open strSQl,Conn , 3, 3 ModuloNome = Rs_FaqSelectModulo("DfNome") response.Write "<tr bgcolor="&bg&">" response.Write "<td width=50 height=20>"&faq_id&"</td>" response.Write "<td width=70 height=20>"&ModuloNome&"</td>" response.Write "<td width=320 height=20>"&faq_pergunta&"</td>" response.Write "<td width=100 height=20>"&faq_autor&"</td>" response.Write "<td width=100 height=20 align=center><a href=verfaq.asp?action=1&id="&faq_id&"><img src=../imagens/ver.ico width=25 border=0></a></td>" response.Write "</tr>" rs_Select.MoveNext Loop end if next 'Fim do laço for if DesenharTabela = False then response.Write "<table align=center width=200 height=50 border=2><tr><td>" response.Write "<center>Não há resultados</center>" response.Write "</td></tr></table>" else response.Write "</table>" END IF END IF %> Editado Março 29, 2005 por cyberalexxx Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest - André - Postado Março 28, 2005 Denunciar Share Postado Março 28, 2005 Vamos lá então:Obs. Como não conheço as origens nem destino de seu código, derrepente poderiamos desenvolver um cláusula em group by no SQL.Bom, mas depende muito do destino e da sua necessidade, entaum desenvolvi um script para manipular o tratamento da sua frase:entaum:<%response.write"Por André Ferreira Lima em 28/03/2005<br>" palavra = "como fazer como o João Fez" ' aqui a sua string dim separada(10)'Um array para obter as palavras cont=0 ' Um contador para manipularmos o array for i=1 to len(palavra)'num caracteres var=mid(palavra,i,1) str=str&var if var=" " then' espaços em branco significa próxima palavra cont=cont+1 separada(cont)=str str="" ' então zeramos a string end if next cont=cont+1 separada(cont)=str ' para não perdermos a última palavra for i=1 to cont ' para evitar palavras repetidas for i2=1 to cont if separada(i)=separada(i2) and not i=i2 then separada(i)="" end if next next for i3=1 to cont if not len(separada(i3)) < 4 then Response.Write(separada(i3)&"<br>") end if next %>agora é so você colocá-las na sua clausula like e obterá os resultados desejados.Lembrando que SEPARADA trata-se de uma matriz.qualquer dúvida poste!!!![]´sAndréKwead.com ano5 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest - André - Postado Março 28, 2005 Denunciar Share Postado Março 28, 2005 faça umn teste também com:palavra = "E no apartamento da madame"lembrando que você deve manter seu tratamento de símbolos[]´skwead.com Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 aferlim Postado Abril 1, 2005 Denunciar Share Postado Abril 1, 2005 e ahe cara funcionou?pos aí pra servir de exemplo.valeu's Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Carlos Rocha
O comandoSql
Like '%"&variavel"&%'
Faz pesquiza por toda a fraze ou palavra digitada certo?
Como faço como por exemplo para no caso da frase:
E no apartamento da madame
usando o comando for do asp do asp, entrara no loop as pesquizas
e, no, apartamento, da, madame
O que eu preciso, é que a pesquiza não seja feita quando encontrar caracters como
e, no, da,
Isso tem geito
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.