2013-05-21 11 views
14

Przekazuję wynik PEŁNEJ przyłączenia zewnętrznego do warunkowego podziału i filtrowania rekordów na podstawie następujących reguł. Zasadniczo obie tabele mają ten sam schemat, a wartości klucza głównego są takie same.Podział warunkowy kończy się niepowodzeniem, jeśli wartość jest równa NULL w SSIS

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

Współpracuje do (a) i (b), ale nie w (c)

Source.Id == Destination.Id 

i zgłasza wyjątek, że ocenie stanu NULL gdzie oczekiwany logiczną. Jak mogę to zrobić?

Podziel warunkowe dostaje sygnał z Merge Join i to FULL OUTER JOIN jak muszę FULL OUTER przyłączyć wyniki tutaj

+0

są trzy punkty oddzielne warunki w swojej warunkowego Split, lub wszystkie trzy punkty są częścią tej samej choroby? –

+0

Istnieją trzy oddzielne warunki. Pierwszy sprawdza ISNULL (Source.Id) Drugi CHecks ISNULL (Destination.Id) i Thrid Condition to Source.Id == Destination.Id – InTheWorldOfCodingApplications

Odpowiedz

21

Twój trzeci warunek powinien zacząć od sprawdzenia ISNULL ponownie przed porównać swoje wartości. Jak następuje:

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

trzeba obsłużyć każdą kolumnę, która może być NULL w swoim stanie. Ponieważ jesteś porównując identyfikatory, innym rozwiązaniem byłoby:

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

przypadku porównywania ciągów można zastąpić zera w pustych przestrzeniach.

0

Alternatywnie można użyć następującej składni:

REPLACENULL(Source.Id,0) == REPLACENULL(Destination.Id,0) 
Powiązane problemy