2016-05-26 8 views
0
((DT_STR,20,1252)OccuranceRegion == "US" && ((DT_STR,20,1252)LegalEntity == "AECB" || (DT_STR,20,1252)LegalEntity == "FSB" || (DT_STR,20,1252)LegalEntity == "Both")) 
? DATEADD("day",30,CapCreationDt) : (ISNULL(MaxofRevSCIAndSCI) ? (DT_DATE)"1900-01-01" : MaxofRevSCIAndSCI) 

と間違って起こっている、私はまたMaxofRevSCIAndSCI、そのNULLでない値をチェックしています。なぜ、他にはないのですか?は、私は結果はNULLとして来ている</p> <pre><code>OccuranceRegion == "US" AND LegalEntity is null </code></pre> <p>などの条件を置くたび、このSSIS由来する発現

+0

MySQLまたはMS SQL Server?関連していない製品にタグを付けないでください。 – jarlh

+0

申し訳ありません。この時からしか世話をしません。 – Ankit

答えて

0

NULLの特殊な機能(「NULLを殺す」関数ISNULLなどを除く)は、NULLに評価されます。 LegalEntityと文字列定数のみを比較します。 LegalEntityがNULLの場合、これらの式はNULLに評価されます。 LegalEntityのNULL値を別のものに置き換える必要があります。 (SSIS式は、デバッグに恐ろしいしているため)おそらく上流

ISNULL(LegalEntity) ? "##NULL#' : LegalEntity 

派生列は、式自体でこれを行うよりも容易になるだろう。

+0

あなたが精巧にできるなら、私は感謝します。 AECBをLegalEntityとして渡すと、この状態は正常に機能しています。 ISNULLの代わりにReplaceNULLを使用する予定です。 – Ankit

+0

「ヌル伝播」と呼ばれています。 LegalEntityがNULLの場合、それを任意の値に対してテストした結果はNULLになります(AECB、FSB、またはBothでない場合は、Falseではありません)。 ReplaceNullは正常です、それはSQL ISNULLのSSISに相当します。 – SebTHU

関連する問題

 関連する問題