Обертывание 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
в строке выше