我正在使用MS SSIS 2008,我想在DERIVED COLUMN函数中执行COALESCE函数。
你能帮我写一下这个表达式吗?
答案 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函数。