PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.
Moderadores: Administradores, Moderadores
por Low_Rider » Quarta Dez 07, 2005 18:38
Tenho a seguinte dúvida de SQL. Imaginemos que quero fazer uma pesquisa sobre um dado nome. Neste caso seria fácil, apenas faria
(...)
where nome = 'blablabla'
Agora imaginemos que caso o nome não fosse indicado a pesquisa deveria ser feita sobre todos os nomes. Como é que faço isso sem ter de repetir a querry toda e pôr um if?
-
Low_Rider
- Novato

-
- Mensagens: 17
- Registado: Quinta Jan 20, 2005 15:58
por Creative Byte » Quinta Dez 08, 2005 13:01
Boas,
Podes sempre ir criando numa variavel a query sql. Por exemplo, limpas a variavel indicas os campos que pretendes obter dados e na condição verificas quais os campos que pretendes colocar, se o campo do nome tem informação adicionas à variavel onde estás a criar a query caso o campo do nome não tenha informação não fazes nada e passas para o seguinte.
-
Creative Byte
- Membro de Prata

-
- Mensagens: 264
- Registado: Quarta Mar 30, 2005 15:55
por capricorn » Sexta Dez 09, 2005 10:20
(...)
WHERE nome LIKE '%texto%'
devolve todos os nomes que conteem 'texto' no meio
se texto for vazio devolve tudo
-
capricorn
- Membro de Prata

-
- Mensagens: 383
- Registado: Sexta Ago 20, 2004 13:03
- Localização: Porto
por Creative Byte » Sexta Dez 09, 2005 12:37
Boas,
Capricorn, mas é uma solução de em termos de performance não é muito recomendado e não podes confiar nos resultados quando necessitas de uma pesquisa mais exacta.
-
Creative Byte
- Membro de Prata

-
- Mensagens: 264
- Registado: Quarta Mar 30, 2005 15:55
por capricorn » Sexta Dez 09, 2005 14:31
em termos de performance apenas se nota quando a tabela tem milhões de registos, o que na maior parte dos casos não se verifica.
-
capricorn
- Membro de Prata

-
- Mensagens: 383
- Registado: Sexta Ago 20, 2004 13:03
- Localização: Porto
por bap_man » Sexta Dez 09, 2005 15:09
Se percebi a questão ... penso que precisas de uma condição verdadeira.
Assim poderás ter :
where ((nome like '%variavel%' and variavel is not null) or
variavel is null)
temos portanto duas situações verdadeiras:
(nome like '%variavel%' and variavel is not null) - obtém todos os registos que contêm o valor da variável
variavel is null - trás todos os registos.
Podes substituir like '%variavel%' por = variavel
Espero ter ajudado.
-
bap_man
- Novato

-
- Mensagens: 3
- Registado: Sexta Dez 09, 2005 10:43
-
Voltar para Programação
Quem está ligado:
Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante