Translate

Three-Valued Logic

Three-Valued Logic

Three-Valued Logic

Autor: Profº Paulo Kaupa

 

A comparação na Cláusula WHERE pode resultar em três valores diferentes True, False ou Uknown. Exemplo:

Temos uma tabela de Funcionários e queremos filtrar aqueles que tem filhos, os Funcionários são identificado por uma FLAG que pode conter ‘S’ indicando que o colaborador tem filhos, ‘N’ para colaboradores que não tem filhos ou pode não ser preenchida (NULL) , assim em uma consulta (SELECT NOME_FUNCIONARIO FROM TB_FUNCIONARIO WHERE FLAG_FILHOS = ‘S’) onde deseja-se retornar Colaboradores com filhos, pode-se obter os seguintes resultados:

  • Quando a coluna FLAG for igual a ‘S’ será retornado TRUE;
  • Quando a coluna FLAG for igual a ‘N’ será retornado FALSE;
  • Quando a coluna FLAG for igual a NULL será retornado Uknown;

Exemplo:

Analise os seguintes registros inseridos na TB_ALUNO:

Com a execução do script a seguir:

SELECT * FROM TB_ALUNO

WHERE ESTADO = 'SP'

 

O resultado exibe o registro que atendeu (TRUE) ao predicado. No Script a seguir espera-se que o retorno seja tudo o que for diferente de ‘SP’.

SELECT * FROM TB_ALUNO

WHERE ESTADO <> 'SP'

 

Com uma análise do resultado da consulta, pode-se identificar que apenas o Estado ‘RJ’ foi retornado embora exista um outro registro:

 

 

 

O predicado <> retorna o que for diferente de ‘SP’, esta informação é processada como verdadeira, o que for igual a ‘SP’ será descartada, pois, não atende ao critério. Para o terceiro registro é retornado UKNOWN (Desconhecido) que também não será retornado.

Nota: NULL é considerado ausência de valor, quando NULL é encontrado o predicado entende como valor desconhecido (UKNOWN).

 

Obs.: Apenas o que for verdadeiro será retornado, False ou Uknown são serão retornados na consulta.

 

Caso seja necessário retornar todos os registros que não são do estado de ‘SP’ deve-se usar a seguinte Consulta:

SELECT * FROM TB_ALUNO

WHERE ESTADO <> 'SP' OR ESTADO IS NULL

 

 

O estudo do Three-Valued Logic proporciona um melhor entendimento do funcionamento dos predicados, bem como melhora a análise de resultados obtidos nas consultas SQL.

 

 

 

Sobre o Autor:

Mestre em Engenharia de Produção pela Universidade Nove de Julho. Bacharel em Ciência da Computação também pela Universidade Nove de Julho. Atualmente é Professor de ensino superior (Universidade Nove de Julho), Analista de Sistemas na Empresa Atento e Pesquisador na área de Inteligência Computacional aplicada em investimentos na Bolsa de Valores de São Paulo. Possui experiência em Análise e desenvolvimento de sistemas, aplicações de Inteligência Computacional no Mercado de Ações, Análise Técnica para seleção de ações para investimentos na Bolsa de Valores. Curriculo Lattes: http://lattes.cnpq.br/0074185478343196