Coalesce和nullif有什么区别

Ist*_*ley -1 sql sql-server reporting-services ssrs-2012

我目前正在制作SSRS报告,该报告需要根据其DEA编号或NPI编号显示Dr的ID.我需要能够在DEA和NPI上进行合并以找到非未知的,然后我将向SSRS报告添加代码,该代码将显示悬停以指示"DEA编号"或"NPI编号"是否为被显示.

下面的SQL会在后端完成吗?从我在网上看到的,似乎nullif和coalesce是非常相似的,并且想知道什么是强调差异,以及它们是否可以一起用来完成这个要求.

coalesce(nullif(convert(varchar,NationalProviderIdentifier),'0'), DEANumber) as 'Dr Id'
Run Code Online (Sandbox Code Playgroud)

Boh*_*ian 7

它们或多或少是无关的.

coalesce()获取值列表返回第一个非空值(或者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
Run Code Online (Sandbox Code Playgroud)

nullif:

case when value1 = value2 then null else value1 end
Run Code Online (Sandbox Code Playgroud)