# Propagazione dei valori NULL nelle espressioni

I valori NULL si propagano attraverso un'espressione, in base a poche regole logiche e completamente comprensibili.

## Funzioni

La regola generale è che tale funzione restituisce un valore NULL quando i parametri non rientrano nella scala per cui è definita la funzione.

Esempio:

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

Come risultato dell'esempio precedente, in genere questo tipo di funzioni restituisce un valore NULL quando il valore di uno dei parametri necessari per la valutazione è NULL.

Esempio:

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

L'eccezione relativa alla seconda regola concerne funzioni logiche di verifica del tipo.

Esempio:

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

### Operatori aritmetici e su stringa

Se NULL è presente in uno di questi operatori, viene restituito NULL.

Esempio:

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

### Operatori relazionali

Se è presente un valore NULL in una qualsiasi parte degli operatori relazionali, si applicano delle regole speciali.

Esempio:

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