【发布时间】:2018-11-11 07:25:51
【问题描述】:
我有一个列 PhoneNumber varchar(50),我想根据以下内容为派生列 PhoneNumberType varchar(50) 构建一个表达式,
IF PhoneNumber <> NULL then
Set to ""Office""
Else
Set to NULL
END IF
我试过了
!ISNULL(PhoneNumber ) ? "Office" : PhoneNumber
但我在将列映射为时遇到错误
Column PhoneNumberType 不能在 unicode 和 非 unicode 字符串数据类型
更新:我可以直接转到派生列组件的高级编辑器并在列属性中选择string [DT_STR] 而不是自动生成的unicode string [DT_WSTR] 数据类型吗?
这是一个好习惯吗?
【问题讨论】:
-
试试这个
!ISNULL(PhoneNumber ) ? (DT_WSTR)"Office" : PhoneNumber,或者如果你想要非unicode,那么反过来!ISNULL(PhoneNumber ) ? "Office" : NULL(DT_STR, 100, 1252) -
@EzLo 我可以直接进入派生列组件的高级编辑器并在列属性中选择字符串 [DT_STR] 而不是自动生成的 Unicode 字符串 [DT_WSTR] 数据类型吗?
-
如果您在派生列中创建新列,则结果类型是从您输入的表达式的结果中推断出来的。使用三元运算符 ? 时,两端必须返回相同的数据类型。您的错误可能会弹出,因为一个结果在 DT_STR 上,另一个在 DT_WSTR 上。另一方面,如果要替换派生列中的列,则数据类型必须保持不变。
标签: sql-server unicode ssis isnull non-unicode