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
  

Mensagemem Ter, 06 Jan 2009 4:05 pm

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

Código: Selecionar todos
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.

Código: Selecionar todos
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.
marquesjr
Localização: Fortaleza - CE

Mensagemem Ter, 06 Jan 2009 4:42 pm

Pode usar variáveis sim.

Algo assim:
Código: Selecionar todos
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.
dr_gori
Localização: Portland, OR USA

Thomas F. G

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

Mensagemem Ter, 06 Jan 2009 5:22 pm

Show :-o
marquesjr
Localização: Fortaleza - CE


  • Veja também
    Respostas
    ExibiÇões
    Última mensagem


      Voltar para SQL

      Quem está online

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