Obecnie pracuję nad migracją ze starego serwera bazy danych Advantage do SQL 2005 za pomocą SSIS 2008. Jedna z kolumn w starej bazie Advantage to typ MEMO. Domyślnie przekłada się to na kolumnę DT_TEXT. No cóż, w nowej bazie danych nie potrzebuję tego dużego pola, ale mogę ograniczyć je do czegoś takiego jak VARCHAR (50). I z powodzeniem założyć pochodzący transformację kolumny, aby przekształcić to z następującego wyrażenia:SSIS ISNULL na pusty ciąg
(DT_STR,50,1252)[ColumnName]
Teraz chcę pójść o krok dalej i zastąpić wszystkie wartości NULL z pustym ciągiem. To wydaje się dość łatwe przy użyciu wyrażenia ISNULL([ColumnName])?"":(DT_STR,50,1252)[ColumnName]
, ale problemem jest to, że OLE DB Destination zawiera następujący błąd
Nie można konwertować między Unicode i non-unicode ciągi ...
Więc widocznie całe wyrażenie ISNULL konwertuje typ danych na ciąg znaków Unicode [DT-WSTR]. Próbowałem różnych rzutów na całym wyrażeniu lub różnych częściach, ale nie mogę uzyskać typu danych dopasowanego do tego, czego potrzebuję.
Po pierwsze, czy możliwe jest przekonwertowanie typu DT_TEXT bezpośrednio na kod Unicode? Z tego, co wiem, odlewy nie działają w ten sposób. Jeśli nie, czy istnieje sposób, aby wyrażenie działało, aby wartości NULL zostały przekonwertowane na puste łańcuchy?
Dziękuję za całą pomoc!
Podjęłam próbę w wielu moich próbach rzucania. Nawet posunąłem się do tego (DT_STR, 50,1252) (ISNULL (ColumnName)? (DT_STR, 1,1252) "" :(DT_STR, 50,1252) ColumnName ... wciąż bez powodzenia. pomysł, i chyba że zrobiłem coś nie tak z moim castingiem, skończyło się nie działa –