Nos, egy jó adag kínlódás - és sok guglizás - után lehullt a lepel: a T-SQL nem törődik a karakteres mezők végén található szóközökkel, az SSIS lookup viszont igen (legalábbis Full Cache esetén). Az igazán gonosz dolog az, hogy gondoltam is erre, és a LEN() függvénnyel ellenőriztem is az értékeket, csakhogy a LEN() szintén nem számolja ezeket a szóközeket.
- SELECT LEN('WHITESPACE'), LEN('WHITESPACE ')
Az eredmény 10 és 10, a LEN() az utolsó szóközt nem látja. Viszont a DATALENGTH() már igen:
Itt már 10 és 11 a függvény értéke.
Ilyen esetekben megoldás lehet, ha SSIS-ben a TRIM() függvényt, SQL oldalon pedig az RTRIM()-et használjuk, vagy ha a lookup transzformációnál nem a Full Cache-t állítjuk be.
Jegyezzük meg: az SSIS lookup nem csak a kis- és nagybetűkre érzékeny, de a sorvégi szóközökre is!
- SELECT DATALENGTH('WHITESPACE'), DATALENGTH('WHITESPACE ')
Ilyen esetekben megoldás lehet, ha SSIS-ben a TRIM() függvényt, SQL oldalon pedig az RTRIM()-et használjuk, vagy ha a lookup transzformációnál nem a Full Cache-t állítjuk be.
Jegyezzük meg: az SSIS lookup nem csak a kis- és nagybetűkre érzékeny, de a sorvégi szóközökre is!