2016-06-25 53 views
0

試圖瞭解以下條件拆分表達式試圖做:條件性拆分解釋

ISNULL(Employee_ID_WD)|| (RIGHT(REPLACENULL(Employee_ID_WD,「0」),LEN(REPLACENULL(Employee_ID,「0」)))!= REPLACENULL(Employee_ID,「0」))

我是SSIS的新手,任何人都可以解釋這一點嗎?

回答

2

這是一個相對直接的表達,當你分解它。

說得簡潔(TL; DR),如果Employee_ID_WD爲空或Employee_ID值不在Employee_ID_WD值,然後返回true。否則,返回false

詳情:

第一部分,ISNULL(Employee_ID_WD),檢查,看看Employee_ID_WD爲null。如果是,表達式將立即返回true。之後的原因是||。這被稱爲邏輯或。如果你在許多編程中看到這一點,它表明程序員想要表達式立即返回,如果它的任何部分在||之前爲真。換句話說,如果||之前的某些事情是真的,那就開始做我需要你做的事,檢查這個表達式中的任何內容都沒有意義,我知道我需要知道什麼才能繼續前進。這被稱爲短路評估。 Wiki。如果Employee_ID_WD不爲空,我們轉到表達式的下一部分。

這部分:

(RIGHT(REPLACENULL(Employee_ID_WD,"0"),LEN(REPLACENULL(Employee_ID,"0"))) 

被抓取在Employee_ID_WD右側的字符。它要求的字符數是從Employee_ID上運行的LEN(長度)函數返回的結果。另外,這兩個部分都檢查它們傳入的值是否爲空,如REPLACENULL函數所示。如果它們爲null,則返回值爲0的字符串。這是爲了防止其中一個值爲空,這樣您可以獲得真正的值比較。在這個表達式的所有部分使用REPLACENULL函數使得它更加健壯,這意味着與數據的不一致將被處理,而不會發生錯誤,或者最終得到一致的結果。

將上述部分的結果與REPLACENULL(Employee_ID,"0")進行比較。如果上面的部分與此不相等(!=不等於),則表達式返回true。

SSIS Expression Reference

+0

謝謝你的詳細答案。這個答案提供了我所尋求的清晰度。 – Sharktooth