Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

heureka

Comando Like

Recommended Posts

Estou com o seguinte problema. Estou usando o comando like dentro de um select para trazer todas os registros de uma determinada categoria. O campo categoria é varchar e ele assume valores como 1 ou 1,2 ou 1,10,11.

 

Aí que reside todo o problema. Quando faço uma consulta pela categoria 1 do tipo:

select * from produtos where categoria like '%1%'

 

É retornado todos os registros que possuem na categoria o algorismo 1.

Qual seria a maneira correta para trazer apenas os produtos da categoria buscada.

 

Espero que alguém possa me ajudar.

 

:) Tiago Marinho

http://www.heureka.arte.nom.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o seu campo é um varchar, você pode usar a função substring(), para determinar qual posição que iniciar a busca, utilizando o like da forma que está fazendo (%1%) ele encontrará o número 1 em qualquer parte da string, usando assim (%1) pegará só o que começa e (1%) só oque termina segue um exemplo:Select campoFrom tabelaWhere substring(campo,1,2) like '%1%' Com este exemplo você pesquisará a string començando da posição 1 retornando 2 caracteres, essa é uma solução que dependendo do número de registros pode ficar pesado, mas existem outras possibilidades, como usar left() ou right(), depende do que que fazer.Espero ter ajudado,Gleidson

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sua dica resolveu para eliminar os campos que possuem valor do tipo 10,11,12 mas a consulta abaixo:

 

select mensagem.*, mensagem_categoria.nome as categoria, mensagem_autor.nome as autor from mensagem inner join mensagem_categoria on mensagem_categoria.id = 1 inner join mensagem_autor on mensagem.id_autor = mensagem_autor.id where left(mensagem.id_categoria,3)=1 order by mensagem.titulo

 

A consulta não retorna os registros com categoria 2,1.

 

O que fazer? Preciso muito de uma ajuda.

 

:rolleyes: Tiago Marinho

http://www.heureka.arte.nom.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tiago, Aparentemente você matou essa categoria no inner join, tente usar este codigo(não sei se vai dar certo póis não tenho a tabelas) se não conseguir me manda um email que eu tento te ajudar.select a.*, b.nome as categoria, c.nome as autor From mensagem a, mensagem_categoria b, mensagem_autor c,Where a.id = b.id and a.id_autor = c.id and Left(a.id_categoria,3) = 1T+

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.