如何在ssis中使用coalesce

时间:2015-06-25 16:41:58

标签: ssis coalesce

我正在使用MS SSIS 2008,我想在DERIVED COLUMN函数中执行COALESCE函数。

你能帮我写一下这个表达式吗?

3 个答案:

答案 0 :(得分:7)

我们没有coalesce功能。我们的表达式语言中的ISNULL与同名的TSQL函数差别很大。

SSIS表达式语言ISNULL计算操作数,如果为空值则返回true,否则返回false。

相反,为了执行类似合并的操作,我们需要使用ISNULL运算符和三元函数?:将其读作Test : True condition : False condition。假设MyColumn是unicode字符串类型,这将确定MyColumn是否为false。如果是,则会对字符串Secondary Condition进行硬编码。否则,它将返回MyColumn的值。这相当于tsql的`coalesce(MyColumn,'Secondary Condition')

ISNULL(MyColumn) ? "Secondary Condition" : MyColumn

Coalesce允许多个搜索条件,因此像coalesce(Column0, Column1, Column2)这样的东西会将三元运算符嵌套在一起<​​/ p>

ISNULL(Column0) ? (ISNULL(Column1) ? Column2: Column1) : Column0

这很难看,但概念仍然相同 - 继续嵌套,直到你匹配了你需要检查的所有级别。

答案 1 :(得分:2)

您可以从派生列转换编辑器中使用REPLACENULL( «expression», «expression» )。只需将列放在第一个表达式中,将默认值放在第二个表达式中即可。

例如,REPLACENULL([some_internal_id], 0)

答案 2 :(得分:-1)

Coalesce功能仅限于TSQL。无论是在SSIS / SSRS中,我们都没有Coalesce功能。因此,为了获得所需的输出,我们必须在SSIS / SSRS中使用ISNULL或ISNOTHING函数。在这种情况下,它将是嵌套的ISNULL函数。