Inquiridor
Full text search - contains varias palavras

Pergunta
-
Pessoal,
Tenho uma sp que traz como parametro uma string.
Qdo a string é de so uma palavra, a clausula full text search "where contains" funciona perfeitamente.Ex:
SELECT ID_link, titulo, ROW_NUMBER() OVER (ORDER BY ID_link) FROM clientes
WHERE CONTAINS(chaves, @Keyword)Mas e se o parametro (string) vem com 5 palavras ?
Como fazer um for pra atender a sp independente da qtde de palavras, usando a where contains ?Valeu
Todas as Respostas
-
Gabriel, a solução abaixo resolve esta situação, se partirmos da premissa que suas informações estarão separadas por vírgula. Se elas estiverem separadas por algum caracter, não precisamos nem de While. Teste passando parâmetros dessa forma: 'PALAVRA1,PALAVRA2,PALAVRA3'.
Create Procedure stp_SelecionaRegistros @Palavras VarChar(100) asBeginDeclare @PalavrasParaBusca VarChar(150)Set @PalavrasParaBusca = '"' + Replace(@Palavras, ',', '" or "') + '"'Select * From Produto Where Contains(NmProduto, @PalavrasParaBusca)End
Roberson Ferreira
Se esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta. -
-
Gabriel, um "espaço" é um caracter normal, da mesma forma que uma vírgula ou que um ponto é vírgula. Então basta você alterar neste script o caracter que será considerado o delimitador entre as palavras. Se perceber, na linha do comando "Set", eu retirei a vírgula e coloquei o espaço em branco. Agora, o parâmetro da procedure deve ser passado da seguinte forma: stp_SelecionaRegistros 'Palavra1 Palavra2 Palavra3'.
Create Procedure stp_SelecionaRegistros @Palavras VarChar(100) as
Begin
Declare @PalavrasParaBusca VarChar(150)
Set @PalavrasParaBusca = '"' + Replace(@Palavras, ' ', '" or "') + '"'
Select * From Produto Where Contains(NmProduto, @PalavrasParaBusca)
End
Roberson Ferreira
Se esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta. -
Gabriel,
Você poderia tentar utilizar os comandos CharIndex e PatIndex para trabalhar com valores string.
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com] -
Gabriel, obteve sucesso em sua questão? Ainda há alguma dúvida sobre ela?
Se estiver tudo ok, por favor, classifique as respostas que foram úteis. Isso poderá ajudar a outros usuários em pesquisas futuras.
Roberson Ferreira - Database DeveloperSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.