Pervasive v11: удалить необязательный параметр в предложении where

Я использую Pervasive V11. В следующем запросе у меня есть необязательный параметр ModelYear. Я хотел бы исключить его запуск в предложении WHERE, когда он передается как NULL.

SELECT  Year,Make,Style,Model,Color1,VIN
                       FROM
                       Vehicles
                      WHERE

                         (VIN ='{VIN}') AND (xyz = '{xyz}') AND 
                       (COALESCE(NULLIF('{ModelYear}', ''), Year))

1 ответ

Вы можете попробовать:

      SELECT  
   Year,Make,Style,Model,Color1,VIN
FROM
   Vehicles
WHERE
   (VIN ='{VIN}') AND 
   (xyz = '{xyz}') AND 
   (ISNULL('{ModelYear}','') = Year END)

Из документов:

ISNULL (exp, value): заменяет NULL на значение, указанное для value. Exp — это выражение для проверки на NULL. Значение — это возвращаемое значение, если exp равно NULL. Exp возвращается, если оно не равно NULL. Тип данных значения должен быть совместим с типом данных exp.

NULLIF (exp1, exp2): NULLIF возвращает exp1, если два выражения не эквивалентны. Если выражения эквивалентны, NULLIF возвращает значение NULL.

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