2013-05-21 8 views
14

Sto passando il risultato di FULL outer join a Conditional Split e Filtering Records sulla base delle seguenti regole. Fondamentalmente entrambe le tabelle hanno lo stesso schema e i valori della chiave primaria sono gli stessi.La divisione condizionale non riesce se il valore è NULL in SSIS

a. If Primary key of Source is NULL 
b. If Primary Key of Destination is NULL 
c. If Source and Destination key matches. 

Funziona bene per (a) e (b), ma non riesce per (c)

Source.Id == Destination.Id 

e getta eccezione che condizione valutata come NULL, dove era atteso booleano. Come posso fare questo lavoro?

condizionale Spalato riceve input da Merge Join ed è un full outer join come ho bisogno di full outer join risultati qui

+0

sono le condizioni tre punti distinti nel Suddivisione condizionale, o tutti e tre i punti sono parte di una stessa condizione? –

+0

Ci sono tre condizioni separate. Il primo controlla ISNULL (Source.Id) Secondo uno CHECK ISNULL (Destination.Id) e Thrid Condition è Source.Id == Destination.Id – InTheWorldOfCodingApplications

risposta

21

tua terza condizione dovrebbe iniziare con un assegno ISNULL di nuovo prima di confrontare i valori. Come il seguente:

!ISNULL(Source.Id) && !ISNULL(Destination.Id) && Source.Id == Destination.Id 

È necessario gestire ogni colonna che può essere NULL nella tua condizione. Dal momento che si sta confrontando ID, un'altra opzione potrebbe essere:

(ISNULL(Source.Id) ? 0 : Source.Id) == (ISNULL(Destination.Id) ? 0 : Destination.Id) 

Se si confrontano le stringhe, è possibile sostituire gli zeri con spazi vuoti.

0

In alternativa si può utilizzare la seguente sintassi:

REPLACENULL(Source.Id,0) == REPLACENULL(Destination.Id,0) 
Problemi correlati