Обертывание ISNULL вокруг NULLIF

Предположим, что у меня есть:

 case  
    when @ID ='2386002' then ISNULL(nullif(i.call,''),i.standingOrderNumber)  
    when nullif(rtrim(i.call),'') is null then 
            nullif(rtrim(i.standingOrderNumber), '')
    else case when nullif(rtrim(i.standingOrderNumber),'') is null then rtrim(i.call) 
         else  
            rtrim(i.call)  

Это только часть процедуры, которая выполняет синхронизацию между двумя приложениями, проблема в том, что постоянный номер не синхронизирован, и я предполагаю, что это связано с этой частью кода.

Сценарий: после ввода вызова и стоящего номера заказа вот так:

call: '' (оставьте это пустым)

стоящий заказ номер: 777777

Данные хранятся в таблице, и процедура берет данные из этой таблицы и отображает их в форме приложения, проблема в том, что все отображается правильно, кроме этого стоящего номера заказа.

Можете ли вы сказать, если что-то пошло не так в логике, которую я представил выше?

1 ответ

Я думаю, что проблема с приведенной ниже строкой,

when @ID ='2386002' then ISNULL(nullif(i.call,''),i.standingOrderNumber)

здесь вы пытаетесь проверить i.call для нулевого значения и замены его пустой строкой, и это делает ISNULL Функция бесполезна.

Решение не использовать nullif в строке выше

Другие вопросы по тегам