Pesquisa com SQL
Boa tarde!
Pessoal, estou com grande dificuldade em fazer um certo tipo de pesquisa com SQL, por exemplo tenho o nome do livro ´Senhor dos Anéis´ e gostaria de fazer uma pesquisa por este título em meu banco, bem estou utilizando o Like ¬´String´¬(Claro, passando à parâmetros eu uma Query), até aí tudo bem pois se eu pesquiso por apenas ´Senhor´ ele me traz todos os títulos que contenham Senhor, e a mesma coisa com Anéis, o problema é se eu quiser pesquisar por exemplo ´Senhor Anéis´ ecluíndo o ´dos´ da consulta, ele não me retorna nada, a mesma coisa acontece se eu quizer inverter as palavras, por exemplo ´Anéis Senhor´, nada retorna. Creio eu que terei que fazer um like para cada palavra, mas como fazê-lo? Terei que gravar cada palavra em uma string e depois pesquizar? E se for isso, como fazer para que do Edit ele grave cada palavra em uma string e depois faça a busca? Pode ser que seja simples, mas meus poucos conhecimentos não me ajudam.
Valeu!
Angelo
Pessoal, estou com grande dificuldade em fazer um certo tipo de pesquisa com SQL, por exemplo tenho o nome do livro ´Senhor dos Anéis´ e gostaria de fazer uma pesquisa por este título em meu banco, bem estou utilizando o Like ¬´String´¬(Claro, passando à parâmetros eu uma Query), até aí tudo bem pois se eu pesquiso por apenas ´Senhor´ ele me traz todos os títulos que contenham Senhor, e a mesma coisa com Anéis, o problema é se eu quiser pesquisar por exemplo ´Senhor Anéis´ ecluíndo o ´dos´ da consulta, ele não me retorna nada, a mesma coisa acontece se eu quizer inverter as palavras, por exemplo ´Anéis Senhor´, nada retorna. Creio eu que terei que fazer um like para cada palavra, mas como fazê-lo? Terei que gravar cada palavra em uma string e depois pesquizar? E se for isso, como fazer para que do Edit ele grave cada palavra em uma string e depois faça a busca? Pode ser que seja simples, mas meus poucos conhecimentos não me ajudam.
Valeu!
Angelo
Angelo
Curtidas 0
Respostas
Prosystem
28/04/2003
[quote=´Angelo´]Boa tarde!
Pessoal, estou com grande dificuldade em fazer um certo tipo de pesquisa com SQL, por exemplo tenho o nome do livro ´Senhor dos Anéis´ e gostaria de fazer uma pesquisa por este título em meu banco, bem estou utilizando o Like ¬´String´¬(Claro, passando à parâmetros eu uma Query), até aí tudo bem pois se eu pesquiso por apenas ´Senhor´ ele me traz todos os títulos que contenham Senhor, e a mesma coisa com Anéis, o problema é se eu quiser pesquisar por exemplo ´Senhor Anéis´ ecluíndo o ´dos´ da consulta, ele não me retorna nada, a mesma coisa acontece se eu quizer inverter as palavras, por exemplo ´Anéis Senhor´, nada retorna. Creio eu que terei que fazer um like para cada palavra, mas como fazê-lo? Terei que gravar cada palavra em uma string e depois pesquizar? E se for isso, como fazer para que do Edit ele grave cada palavra em uma string e depois faça a busca? Pode ser que seja simples, mas meus poucos conhecimentos não me ajudam.
Valeu!
Angelo
Pessoal, estou com grande dificuldade em fazer um certo tipo de pesquisa com SQL, por exemplo tenho o nome do livro ´Senhor dos Anéis´ e gostaria de fazer uma pesquisa por este título em meu banco, bem estou utilizando o Like ¬´String´¬(Claro, passando à parâmetros eu uma Query), até aí tudo bem pois se eu pesquiso por apenas ´Senhor´ ele me traz todos os títulos que contenham Senhor, e a mesma coisa com Anéis, o problema é se eu quiser pesquisar por exemplo ´Senhor Anéis´ ecluíndo o ´dos´ da consulta, ele não me retorna nada, a mesma coisa acontece se eu quizer inverter as palavras, por exemplo ´Anéis Senhor´, nada retorna. Creio eu que terei que fazer um like para cada palavra, mas como fazê-lo? Terei que gravar cada palavra em uma string e depois pesquizar? E se for isso, como fazer para que do Edit ele grave cada palavra em uma string e depois faça a busca? Pode ser que seja simples, mas meus poucos conhecimentos não me ajudam.
Valeu!
Angelo
Amigo o comando like pesquisa uma cadeia de caracters nao tendo como excluir no seu caso o ´do´ mas se voce tentar assim :
Exemplo : ´string´¬ ou ¬string
Veja se é o que vc precisa.
GOSTEI 0
Cefernan
28/04/2003
Olá Angelo,
este é um exemplo de como eu faço para procurar por palavras separadas. Por exemplo: ´Senhor Anéis´, a consulta retornará qualquer registro que contenha as duas palavras, não necessariamente consecutivas, podendo ter qualquer palavra ou palavras entre elas. Para o caso ´Anéis Senhor´ essa função não funciona.
procedure TF_ConContato.EditProcuraChange(Sender: TObject);
var Aux: string;
i: Integer;
begin
Aux := ´¬´;
for i := 1 to Length(EditProcura.Text) do
begin
if EditProcura.Text[i] = ´ ´ then
Aux := Aux + ´¬´
else
Aux := Aux + EditProcura.Text[i];
end;
Aux := Aux + ´¬´;
T_Pesquisa.Close;
T_Pesquisa.ParamByName(´Texto´).Value := Aux;
T_Pesquisa.Open;
end;
este é um exemplo de como eu faço para procurar por palavras separadas. Por exemplo: ´Senhor Anéis´, a consulta retornará qualquer registro que contenha as duas palavras, não necessariamente consecutivas, podendo ter qualquer palavra ou palavras entre elas. Para o caso ´Anéis Senhor´ essa função não funciona.
procedure TF_ConContato.EditProcuraChange(Sender: TObject);
var Aux: string;
i: Integer;
begin
Aux := ´¬´;
for i := 1 to Length(EditProcura.Text) do
begin
if EditProcura.Text[i] = ´ ´ then
Aux := Aux + ´¬´
else
Aux := Aux + EditProcura.Text[i];
end;
Aux := Aux + ´¬´;
T_Pesquisa.Close;
T_Pesquisa.ParamByName(´Texto´).Value := Aux;
T_Pesquisa.Open;
end;
GOSTEI 0