【问题标题】:what is the difference between Coalesce and nullifCoalesce 和 nullif 有什么区别
【发布时间】:2016-10-12 16:53:26
【问题描述】:

我目前正在编写一份 SSRS 报告,该报告需要根据其 DEA 编号或 NPI 编号显示医生的 ID。我需要能够对 DEA 和 NPI 进行合并以找到非未知的,然后我会将代码添加到 SSRS 报告中,该报告将显示悬停在说明“DEA 编号”或“NPI 编号”是正在显示。

下面的 SQL 会在后端完成这个吗?从我在网上阅读的内容来看,nullif 和 coalesce 似乎非常相似,并且想知道下划线的区别是什么,以及它们是否可以一起使用来完成这个要求。

coalesce(nullif(convert(varchar,NationalProviderIdentifier),'0'), DEANumber) as 'Dr Id'

【问题讨论】:

标签: sql sql-server reporting-services ssrs-2012


【解决方案1】:

它们或多或少无关。

coalesce() 采用 list 值并返回第一个 non-null 值(如果所有值都是 null,则返回 null)。

nullif() 接受 两个 值并返回第一个值,但如果值相等则返回 null


如果将两者转换为case 语句,它们将是:

coalesce:

case
    when value1 is not null then value1
    when value2 is not null then value2
    ... etc
    else null
end

nullif:

case when value1 = value2 then null else value1 end

【讨论】:

    【解决方案2】:
    T coalesce(T a, T b) {
        if(a != null) return a;
        return b;
    }
            
    T nullif(T a, T b) {
        if(a == b) return null; 
        return a;
    }
    

    【讨论】:

    • 问题是询问两者的区别。我不确定这对不熟悉差异的人特别有用。你能edit你的答案提供更多解释吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    相关资源
    最近更新 更多