Por lo tanto, actualmente estoy trabajando en una migración de un antiguo servidor de base de datos Advantage a SQL 2005 utilizando SSIS 2008. Una de las columnas en la base de datos anterior Advantage es MEMO. Por defecto, esto se traduce en una columna DT_TEXT. Bueno, en la nueva base de datos no necesito este gran campo, pero puedo limitarlo a algo como VARCHAR (50). Me establecido con éxito una transformación columna derivada de convertir esto con la siguiente expresión:SSIS ISNULL para vaciar la cadena
(DT_STR,50,1252)[ColumnName]
Ahora quiero ir un paso más allá y sustituir todos los valores NULL con una cadena vacía. Esto parece bastante fácil usando una expresión ISNULL([ColumnName])?"":(DT_STR,50,1252)[ColumnName]
, pero el problema es que el destino de OLE DB contiene el siguiente error
No se puede convertir entre cadenas Unicode y no Unicode ...
Así que al parecer la toda la expresión ISNULL convierte el tipo de datos a cadena Unicode [DT-WSTR]. He probado una variedad de moldes sobre toda la expresión o diferentes partes, pero no puedo obtener el tipo de datos para que coincida con lo que necesito.
En primer lugar, ¿es posible convertir el tipo DT_TEXT directamente en unicode? Por lo que puedo decir, los moldes no funcionan de esa manera. Si no, ¿hay alguna manera de hacer que una expresión funcione para que los valores NULL se conviertan en cadenas vacías?
¡Gracias por toda su ayuda!
Lo intenté en mis muchos intentos de lanzamiento. Incluso fui tan lejos como para hacer esto (DT_STR, 50,1252) (ISNULL (ColumnName)? (DT_STR, 1,1252) "" :(DT_STR, 50,1252) ColumnName ... todavía sin suerte. Agradezco la idea, y a menos que hice algo mal con mi casting, terminó no funcionaba –