Мне нужно отфильтровать записи, где:
NotificationRead = 0 || NULL --> IF GetRead = 0
NotificationRead = 1 --> IF GetRead = 1
NotificationRead = 0 || 1 || NULL --> IF GetRead = NULL
Вот запрос, который я использую для этого:
DECLARE @GetRead BIT
DECLARE @Query VARCHAR(20)
SET @GetRead = NULL
IF @GetRead = 0 SET @Query = '0,NULL'
ELSE IF @GetRead = 1 SET @Query = '1'
ELSE SET @Query = '0,1,NULL'
SELECT * FROM vwNotifications WHERE NotificationRead IN (@Query)
Приведенный выше запрос в основном не выполняется, когда я предоставляю NULL
в предложении IN
.
Я знаю причину, по которой этот вопрос .
Но если я приму подход, предложенный в ответе на этот вопрос (используя NotificationRead IN (@Query) OR NotificationRead IS NULL
), я получу все записи, где NotificationRead = NULL
, когда они мне не нужны, например, когда @GetRead = 1
Не могли бы вы указать мне правильное направление здесь?