Compartir a través de


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 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

Éste es el conjunto de resultados. 

a           b      c           d      
----------- ------ ----------- ------ 
NULL        three  NULL        NULL 
1           one    NULL        NULL 
4           join4  4           four   

(3 row(s) affected)

Los resultados no facilitan la distinción de un valor NULL en los datos, de otro valor NULL que represente que la combinación no se puede 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.

Vea también

Otros recursos

sp_dbcmptlevel (Transact-SQL)
WHERE (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005