Dúvida sobre cláusula WHERE

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
marquesjr
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 77
Registrado em: Qua, 05 Dez 2007 10:51 am
Localização: Fortaleza - CE

Esses dias estava procurando uma informação que para facilitar minha vida, tenho um select parecido com o abaixo:

Selecionar tudo

SELECT
    *
FROM
    fornec
WHERE
    cd_fornec = 2312
AND dat_cadast = '12/12/08'
AND cnpj = '000000'
Uso esse select constatemente, as vezes pesquiso pelo código do fornecedor as vezes pela data de cadastro, enfim, sempre que vou utilizar somente uma pesquisa, por exemplo código, tenho que apagar os AND´s restantes.

Pergunta existe alguma forma de manter o select e utilizar somente um ou dois critério de pesquisa e manter as outras opções?

Exemplo:

Seleciono todos os "cd_fornec" e "cnpj" para os fornecedores cadastrados em 12/12/08.

Selecionar tudo

SELECT
    *
FROM
    fornec
WHERE
    cd_fornec = X
AND dat_cadast = '12/12/08'
AND cnpj = X
Ou seja manter os critérios de pesquisa "cd_fornec" e "cnpj".

Tentei usar variáveis mas não encontrei nunhuma forma. Sei que posso usar o LIKE mais gostaria de algo mais prático.
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Pode usar variáveis sim.

Algo assim:

Selecionar tudo

SELECT
    *
FROM
    fornec
WHERE
    (vfornec is null OR cd_fornec = vfornec)
AND (vcadast is null OR dat_cadast = to_date(vcadast,'dd/mm/yyyy')
AND (vcnpj   is null OR cnpj = vcnpj)
Dessa forma, caso as variáveis vfornec, vcadast e vcnpj estejam NULAS, o SQL vai simplesmente DESCONSIDERÁ-LAS.
marquesjr
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 77
Registrado em: Qua, 05 Dez 2007 10:51 am
Localização: Fortaleza - CE

Show :-o
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes