Questão vinda direto da wikipedia =/
Texto que explica a resposta: ( http://pt.wikipedia.org/wiki/L%C3%B3gica_tern%C3%A1ria )
A linguagem SQL implementa lógica ternárica como uma forma de lidar com o o conteúdo nulo de campos de registros, utilizando NULL
para representar valores em falta num banco de dados. Se um campo não possui um valor definido, o SQL assume NULL
, mas esse valor não é gravado no banco de dados. Entretanto, um valor em falta é diferente dum valor numérico zero (0
) ou de uma cadeia de caracteres vazia (""
). A comparação comNULL
resulta num estado
chamado UNKNOWN
. Por exemplo, a expressão SQL "Cidade = 'Porto Alegre'
" retorna FALSE
para um registro contendo "Rio de Janeiro" no campo Cidade
, mas retorna UNKNOWN
para um registro contendoNULL
no mesmo campo.
Usando a lógica ternária, o SQL consegue usar UNKNOWN
para resolver expressões booleanas. Considerando a expressão "Cidade = 'Porto Alegre' OR Balanco < 0.0
". Essa expressão retorna TRUE
para qualquer registro contendo um valor negativo no campo Balanco
. A mesma expressão retorna TRUE
para qualquer registro contendo "Porto Alegre" no campo Cidade
. Já FALSE
é retornado somente para um registro contendo explicitamente uma cadeia diferente de "Porto Alegre" e cujo campo Balanco
é explicitamente não negativo. Em qualquer outro caso, o retorno é UNKNOWN
.
Na linguagem de manipulação de dados do SQL, um retorno TRUE
duma expressão inicia uma ação, enquanto UNKNOWN
ou FALSE
não iniciam ações. Dessa forma a lógica ternária é transformada em binária para o utilizador.