試圖瞭解以下條件拆分表達式試圖做:條件性拆分解釋
ISNULL(Employee_ID_WD)|| (RIGHT(REPLACENULL(Employee_ID_WD,「0」),LEN(REPLACENULL(Employee_ID,「0」)))!= REPLACENULL(Employee_ID,「0」))
我是SSIS的新手,任何人都可以解釋這一點嗎?
試圖瞭解以下條件拆分表達式試圖做:條件性拆分解釋
ISNULL(Employee_ID_WD)|| (RIGHT(REPLACENULL(Employee_ID_WD,「0」),LEN(REPLACENULL(Employee_ID,「0」)))!= REPLACENULL(Employee_ID,「0」))
我是SSIS的新手,任何人都可以解釋這一點嗎?
這是一個相對直接的表達,當你分解它。
說得簡潔(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。
謝謝你的詳細答案。這個答案提供了我所尋求的清晰度。 – Sharktooth