Cómo comparar Nulos en SSIS

Saludos, en SSIS comparar dos columnas en un conditional split que pueden contener valores no es tan simple como usar el operador de igualdad (==) si se intenta eso no se generan errores en tiempo de diseño pero generará errores al momento de ejecutar el paquete dado que la comparación nula con un valor da un resultado desconocido.

Para solventar esta situación analizamos los casos que se pueden presentar al evaluar la condición

Origen Destino
ORIGEN_Columna DESTINO_COLUMNA

Vamos caso por caso

 

Caso Expresión ¿Son iguales?
Las dos columnas son nulas ((ISNULL([ORIGEN_Columna]) && ISNULL([DESTINO_COLUMNA])) ? TRUE Si
Una de las dos columnas es nula ((ISNULL([ORIGEN_Columna]) || ISNULL([DESTINO_COLUMNA])) ? FALSE No
Ninguna es nula, comparar valor ([ORIGEN_Columna] == [DESTINO_COLUMNA]) Sí, si los valores son iguales

La expresión final sería

((ISNULL([ORIGEN_Columna]) && ISNULL([DESTINO_COLUMNA])) ? TRUE : ((ISNULL([ORIGEN_Columna]) || ISNULL([DESTINO_COLUMNA])) ? FALSE : ([ORIGEN_Columna] == [DESTINO_COLUMNA])))

 

Existen otras opciones como REPLACENULL el cuál permite emitir un valor en caso que el primer valor sea NULO, sin embargo considero que la expresión evaluando nulos es más rápida dado que no requiere instanciar un nuevo valor

 

Espero sea de ayuda

FREDDY LEANDRO ANGARITA CASTELLANOS
Data platform MVP
@flacMVP