Необязательное условие «IS NULL» WHERE на основе параметра - PullRequest
0 голосов
/ 03 октября 2018

У меня есть запрос с WHERE предложением

WHERE [column1] = 'some value'
AND [column2] IS NULL

Я хочу сделать часть IS NULL необязательной на основе параметра.

Если значение для param1 дляНапример, при условии, эту часть предложения WHERE следует игнорировать.

AND [column2] IS NULL

РЕДАКТИРОВАТЬ:

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

Есть идеи?

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Это должно работать:

WHERE (ISNULL('some value', '') = '' OR column1 = 'some value') 
AND (ISNULL('some value', '') = '' OR column2 = 'some value')
0 голосов
/ 03 октября 2018
WHERE [column1] = 'some value'
AND (@param1 IS NOT NULL OR [column2] IS NULL)

Если задано @ param1, второе условие всегда будет иметь значение true, в противном случае он будет проверять, является ли [column2] нулевым

0 голосов
/ 03 октября 2018

Вы можете просто сделать это .. Также вы можете использовать IsNull().

WHERE ((@param1 IS NULL OR @param1 = '') and [column1] = 'some value' and [column2] IS NULL)
OR (@param1 IS not NULL and [column1] = 'some value');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...