SELECT validando CAMPO em BRANCO

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
Avatar do usuário
vitellozzi
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 50
Registrado em: Qua, 15 Set 2010 9:53 am
Localização: Itatiba

Olá Pessoal, Boa Tarde.

Por gentileza, é possível fazer um select que verifique a tabela e seus campos quais estão em branco.

Por exemplo : Tabela USUARIOS com os CAMPOS NOME, ENDERECO, CIDADE, BAIRRO, TELEFONE, CEP, DT NASCIMENTO, etc ...

Quero um SELECT que eu indique os campos e se um deles estiver em branco me informar os registros.

É possível ???
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

Tente algo assim:

Selecionar tudo

Select COLUNAS
  From TABELA
 Where COLUNA1 Is Null
    Or COLUNA2 Is Null
    Or COLUNA3 Is Null
    ...
Avatar do usuário
vitellozzi
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 50
Registrado em: Qua, 15 Set 2010 9:53 am
Localização: Itatiba

Tentei dos dois tipos usando IS NULL e <> ' ' porém quando utilizo OR o sistema trava, por isso optei em não utilizar.

Esse é o SELECT que estou elaborando, imagine todos os campos preenchidos, menos o telefone. Queria que o SELECT informasse esse registro.

Selecionar tudo

SELECT * FROM USUARIO U, V_USUARIO VU, ENDERECO E, FUNCIONARIO F WHERE U.NRREGISTRO_USUARIO = '33505'
AND U.NRREGISTRO_USUARIO = E.NRREGISTRO AND U.NRREGISTRO_USUARIO = VU.NRREGISTRO_USUARIO AND E.NOOPERADOR = F.CDFUNCIONARIO
AND U.DTINICIO BETWEEN '01/01/2010' AND '30/11/2010' AND VU.DTEXCLUSAO IS NULL
AND VU.NRCGC_CPF <> '' AND VU.NRINSCEST_RG <> '' AND VU.CDESTADOCIVIL <> '' AND VU.CDSEXO <> '' 
AND E.NRCEP <> '' AND E.CDCIDADE <> '' AND E.CDESTADO <> '' AND E.NOLOGRADOURO <> '' AND E.NRTELEFONE <> ''
diegopedrao
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 164
Registrado em: Sex, 22 Ago 2008 12:28 pm
Localização: SP

Tenta usar então assim:

Selecionar tudo

NVL(campo, 'sem registro') = 'sem registro'

Att,

Diego Monteiro
Avatar do usuário
vitellozzi
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 50
Registrado em: Qua, 15 Set 2010 9:53 am
Localização: Itatiba

Como utilizar o NVL ?

Imagino que não iria trazer o desejado vejamos :

Tenho dois registro com NOME, ENDERECO, CIDADE, BAIRRO

Registro 1 : Fulano, Rua 1, - , Bairro 1
Registro 2 : Ciclano, - , Cidade 2, Bairro 2
Registro 3 : Beltrano, Rua 3, Cidade 3 , -
Registro 4 : Vitellozzi, Rua 4, Cidade 4, Bairro 4

Com o NVL imagino que iria aparecer no lugar do NULL o 'Sem registro'.

Preciso que o select me informasse os registros que possuem os campos em branco ou NULL que seriam o 1, 2 e 3.
diegopedrao
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 164
Registrado em: Sex, 22 Ago 2008 12:28 pm
Localização: SP

Olha o exemplo:

- O campo Cidade está em branco ok? Então Vamos lá:

Selecionar tudo

SELECT ID_CLIENTE,
           NOME_CLIENTE,
           CIDADE
  FROM TB_CADASTRO_CLIENTE
WHERE NLV(CIDADE, 'SEM REGISTRO') = 'SEM REGISTRO'
      OR NLV(NOME, 'SEM REGISTRO') = 'SEM REGISTRO'


      
Att,

Diego Monteiro
Avatar do usuário
vitellozzi
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 50
Registrado em: Qua, 15 Set 2010 9:53 am
Localização: Itatiba

Tentei criar com o seu exemplo, mas ocorre esse tipo de erro :

Selecionar tudo

ORA-00920: invalid relational operator

Selecionar tudo

SELECT VU.NRCGC_CPF, VU.NRINSCEST_RG, VU.CDESTADOCIVIL, VU.CDSEXO, E.NRCEP, E.CDCIDADE, E.CDESTADO, E.NOLOGRADOURO,E.NRTELEFONE
 FROM USUARIO U, V_USUARIO VU, ENDERECO E, FUNCIONARIO F
 WHERE NVL(VU.NRCGC_CPF, '') = 'SEM REGISTRO' -- até aqui nornal !!!
    OR (VU.NRINSCEST_RG, '') = 'SEM REGISTRO' -- ocorre o erro !!!
    OR (VU.CDESTADOCIVIL, '') = 'SEM REGISTRO'
    OR (VU.CDSEXO, '') = 'SEM REGISTRO'
    OR (E.NRCEP, '') = 'SEM REGISTRO'
    OR (E.CDCIDADE, '') = 'SEM REGISTRO'
    OR (E.CDESTADO, '') = 'SEM REGISTRO'
    OR (E.NOLOGRADOURO, '') = 'SEM REGISTRO'
    OR (E.NRTELEFONE, '') = 'SEM REGISTRO'
   AND U.NRREGISTRO_USUARIO = '33505' -- registro que eu sei que um dos campos está em branco ...
   AND U.NRREGISTRO_USUARIO = E.NRREGISTRO
   AND U.NRREGISTRO_USUARIO = VU.NRREGISTRO_USUARIO
   AND E.NOOPERADOR = F.CDFUNCIONARIO
   AND U.DTINICIO BETWEEN '01/01/2010' AND '30/11/2010'
   AND VU.DTEXCLUSAO IS NULL
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

ta faltando o nvl no trecho que deu erro pra baixo
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

tente isto:

Selecionar tudo

Select *
  From usuario     u,
       v_usuario   vu,
       endereco    e,
       funcionario f
 Where u.nrregistro_usuario = '33505'
   And u.nrregistro_usuario = e.nrregistro
   And u.nrregistro_usuario = vu.nrregistro_usuario
   And e.nooperador = f.cdfuncionario
   And u.dtinicio Between '01/01/2010' And '30/11/2010'
   And (vu.dtexclusao Is Null
     Or vu.nrcgc_cpf Is Null
     Or vu.nrinscest_rg Is Null
     Or vu.cdestadocivil Is Null
     Or vu.cdsexo Is Null
     Or e.nrcep Is Null
     Or e.cdcidade Is Null
     Or e.cdestado Is Null
     Or e.nologradouro Is Null
     Or e.nrtelefone Is Null)
diegopedrao
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 164
Registrado em: Sex, 22 Ago 2008 12:28 pm
Localização: SP

Gfkauer,

Ela não pode utilizar o IS NULL
Tentei dos dois tipos usando IS NULL e <> ' ' porém quando utilizo OR o sistema trava, por isso optei em não utilizar.
Att,

Diego Monteiro
Avatar do usuário
vitellozzi
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 50
Registrado em: Qua, 15 Set 2010 9:53 am
Localização: Itatiba

Olá Pessoa, Boa Tarde. PERFEITO !!! Funcionou só precisei retirar a DTEXCLUSAO que precisa ser NULL com exeção aos demais campos.

Agradeço muito a ajuda de todos !!! Abraços

Selecionar tudo

Select vu.dtexclusao,
        vu.nrcgc_cpf,
        vu.nrinscest_rg,
        vu.cdestadocivil,
        vu.cdsexo,
        e.nrcep,
        e.cdcidade,
        e.cdestado,
        e.nologradouro,
        e.nrtelefone 
   From usuario u, v_usuario vu, endereco e, funcionario f
  Where u.nrregistro_usuario = '33505'
    And u.nrregistro_usuario = e.nrregistro
    And u.nrregistro_usuario = vu.nrregistro_usuario
    And e.nooperador = f.cdfuncionario
    And u.dtinicio Between '01/01/2010' And '30/11/2010' 
    And vu.dtexclusao Is Null
    And (vu.nrcgc_cpf Is Null Or
        vu.nrinscest_rg Is Null Or vu.cdestadocivil Is Null Or
        vu.cdsexo Is Null Or e.nrcep Is Null Or e.cdcidade Is Null Or
        e.cdestado Is Null Or e.nologradouro Is Null Or e.nrtelefone Is Null)
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

Imaginei que ele ter falado que travou quando usou o IS Null completando com o Or faltava o jogo de parenteses sobre as cláusulas de testes com vazio geralmente cometo este erro e por ser algo simples passa desapercebido...
Responder
  • Informação
  • Quem está online

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