Combinaciones y valores NULL
Cuando hay valores NULL en las columnas de las tablas que se están combinando, los valores NULL no coinciden unos con otros. La presencia de valores NULL en una columna de una de las tablas que se está combinando sólo se puede indicar si se usa una combinación externa (a menos que la cláusula WHERE excluya los valores NULL).
A continuación se muestran dos tablas que tienen, cada una, un valor NULL en la columna que participa en la combinación:
table1 table2
a b c d
------- ------ ------- ------
1 one NULL two
NULL three 4 four
4 join4
Una combinación que compara los valores de la columna a con los de la columna c no obtiene una coincidencia en las columnas que tienen valores NULL:
SELECT *
FROM table1 t1 JOIN table2 t2
ON t1.a = t2.c
ORDER BY t1.a
Sólo se devuelve una columna con el valor 4 en la columna a y c:
a b c d
----------- ------ ----------- ------
4 join4 4 four
(1 row(s) affected)
Los valores NULL devueltos de una tabla base también son difíciles de distinguir de los valores NULL devueltos en una combinación externa. Por ejemplo, la siguiente instrucción SELECT realiza una combinación externa izquierda en las dos tablas:
SELECT *
FROM table1 t1 LEFT OUTER JOIN table2 t2
ON t1.a = t2.c
ORDER BY t1.a
El conjunto de resultados es el siguiente.
a b c d
----------- ------ ----------- ------
NULL three NULL NULL
1 one NULL NULL
4 join4 4 four
(3 row(s) affected)
Los resultados no permiten distinguir fácilmente entre un valor NULL existente en los datos y otro valor NULL que represente que la combinación no se ha podido realizar. Cuando haya valores NULL en los datos que se estén combinando, normalmente será preferible omitirlos de los resultados al utilizar una combinación normal.