2016-10-12 3 views
-1

В настоящее время я работаю над докладом SSRS, который должен будет отображать идентификатор Dr на основе их номера DEA или номера NPI. Мне нужно иметь возможность выполнять совместную работу над DEA и NPI, чтобы найти не-неизвестный, который я затем добавлю код в отчет SSRS, который будет отображать зависание по поводу того, будет ли «DEA Number» или «NPI Number» отображается.В чем разница между Coalesce и nullif

Может ли следующий SQL выполнить это в фоновом режиме? Из того, что я читал в Интернете, похоже, что nullif и coalesce очень похожи, и задавались вопросом, что такое подчеркивающая разница, и могут ли они использоваться вместе для выполнения этого требования.

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

Они не делают то же самое .. 'NULLIF' возвращает значение null, если оба аргумента совпадают. 'COALESCE' возвращает первый непустой аргумент. Возможно, вы думаете о 'ISNULL' и' COALESCE', которые похожи на https://blogs.msdn.microsoft.com/sqltips/2008/06/26/differences-between-isnull-and-coalesce/ –

+1

Вы имели в виду разница между 'coalesce' и' isnull'? Вы прочитали документацию по ['coalesce'] (https://msdn.microsoft.com/en-us/library/ms190349.aspx), [' isnull'] (https://msdn.microsoft.com/en -us/library/ms184325.aspx) и ['nullif'] (https://msdn.microsoft.com/en-us/library/ms177562.aspx)? –

+0

Кроме того, [не конвертировать в varchar без указания длины] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without- length.aspx). –

ответ

3

Это более или менее не связанные.

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 

nullif:

case when value1 = value2 then null else value1 end 
Смежные вопросы