Синтаксис условного оператора Where или какое-либо другое решение

#tsql

#tsql

Вопрос:

@MallUnit — это параметр со значением ‘Unit 401, Unit 402, Unit 403’ Я хотел бы иметь условный оператор where. Предположим, что перед И есть другие условия, которые работают просто отлично. В принципе, если ScheduledMallUnitTypeID равен нулю, вычислите, используя условие IN . В противном случае используйте предложение like .

 AND
                CASE ScheduledMallUnitTypeID IS NULL THEN
                ScheduledMallUnitTypeID IN
                (       
                 SELECT Value 
                 FROM Toolbox.dbo.ReportingPortalMultiSetParameterFix(@MallUnit)
                )
                ELSE ScheduledMallUnitTypeID LIKE @MallUnit
                END
  

Ответ №1:

Это сработало бы:

 WHERE
   ( ScheduledMallUnitTypeID IS NULL AND
     ScheduledMallUnitTypeID IN
                (       
                 SELECT Value 
                 FROM Toolbox.dbo.ReportingPortalMultiSetParameterFix(@MallUnit)
                )
   )
   OR
   (
     ScheduledMallUnitTypeID IS NOT NULL AND 
     ScheduledMallUnitTypeID LIKE @MallUnit
   )
  

Комментарии:

1. Чего-то не хватает. ScheduledMallUnitTypeID не может быть одновременно NULL и IN (SELECT …) .