# Propagação de valores NULL em expressões

Os valores NULL se propagarão por meio de uma expressão de acordo com algumas regras lógicas e bastante razoáveis.

## Funções

A regra geral é que as funções retornam NULL quando os parâmetros ficam fora do intervalo para o qual a função está definida.

Exemplo:

* asin(2) retorna NULL
* log(-5) retorna NULL
* round(A,0) retorna NULL

Como resultado, as funções em geral retornam NULL quando qualquer um dos parâmetros necessários à avaliação é NULL.

Exemplo:

* sin(NULL) retorna NULL
* chr(NULL) retorna NULL
* if(NULL, A, B) retorna B
* if(True, NULL, A) retorna NULL
* if(True, A, NULL) retorna A

A exceção à segunda regra são as funções lógicas para teste de tipo.

Exemplo:

* isnull(NULL) retorna True (-1)
* isnum(NULL) retorna False (0)

### Operadores aritméticos e de caractere

Se NULL for encontrado em qualquer lado desses operadores, o resultado será NULL.

Exemplo:

* A + NULL retorna NULL
* A - NULL retorna NULL
* A / NULL retorna NULL
* A \* NULL retorna NULL
* NULL / A retorna NULL
* 0 / NULL retorna NULL
* 0 \* NULL retorna NULL
* A & NULL retorna A

### Operadores relacionais

Se NULL for encontrado em qualquer lado dos operadores relacionais, serão aplicadas regras especiais.

Exemplo:

* NULL rel.op NULL retorna NULL
* A &lt;&gt; NULL retorna True (-1)
* A &lt; NULL retorna False (0)
* A &lt;= NULL retorna False (0)
* A = NULL retorna False (0)
* A &gt;= retorna False (0)
* A &gt; NULL retorna False (0)