gpt4 book ai didi

SSIS ISNULL 为空字符串

转载 作者:行者123 更新时间:2023-12-03 02:00:45 26 4
gpt4 key购买 nike

因此,我目前正在使用 SSIS 2008 从旧的 Advantage 数据库服务器迁移到 SQL 2005。旧的 Advantage 数据库中的列之一是 MEMO 类型。默认情况下,这会转换为 DT_TEXT 列。那么在新数据库中我不需要这么大的字段,但可以将其限制为诸如 VARCHAR(50) 之类的字段。我成功设置了派生列转换,以使用以下表达式进行转换:

(DT_STR,50,1252)[ColumnName]

现在我想更进一步,用空字符串替换所有 NULL 值。使用 ISNULL([ColumnName])?"":(DT_STR,50,1252)[ColumnName] 表达式似乎很容易,但问题是 OLE DB 目标包含以下错误

Cannot convert between unicode and non-unicode strings...

显然整个 ISNULL 表达式将数据类型转换为 Unicode 字符串 [DT-WSTR]。我已经尝试了对整个表达式或不同部分的各种转换,但我无法获得与我需要的数据类型相匹配的数据类型。

首先,是否可以将DT_TEXT类型直接转换为unicode?据我所知, Actor 阵容并不是这样工作的。如果没有,有没有办法让表达式工作,以便 NULL 值转换为空字符串?

感谢您的帮助!

最佳答案

在您的派生列中尝试一下。

(DT_STR,50,1252) (ISNULL(ColumnName) ? "" : (DT_STR,50,1252) ColumnName)

它包含一个额外的类型转换,并在括号中使用条件 (?:),以确保所需的处理顺序。我认为您的原始表达式隐式转换为 DT_WSTR,因为“”默认为 DT_WSTR。在这个新版本中,您可以在计算表达式后强制转换为 DT_STR。

关于SSIS ISNULL 为空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4693800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com