# Propagación de valores NULL en expresiones

Los valores NULL se propagarán a través de una expresión de acuerdo con unas pocas reglas lógicas.

## Funciones

La regla general es que las funciones devuelven NULL cuando los parámetros se salen del rango para el cual se ha definido la función.

Ejemplo:

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

Como resultado de lo arriba expuesto se infiere que las funciones generalmente devuelven NULL cuando cualquiera de los parámetros necesarios para la evaluación son NULL.

Ejemplo:

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

La excepción a la segunda regla es que las funciones lógicas comprueban el tipo.

Ejemplo:

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

### Operadores aritméticos y de cadena

Si se encuentra NULL a cualquier lado de estos operadores, devuelve NULL.

Ejemplo:

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

### Operadores relacionales

Si se encuentra NULL en cualquier lado de los operadores relacionales, se aplican reglas especiales.

Ejemplo:

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