Как проверить ISNULL в предложении Where для запроса?

#sql #sql-server #tsql

#sql #sql-сервер #tsql

Вопрос:

У меня есть такой вопрос, как:

 SELECT  PLIR.ListItemID AS [value],  Item.ActiveFlag,  Item.ListItemCode  FROM ListItem AS [Item] INNER JOIN ListItemRelationship AS [PLIR] ON Item.ListItemID = PLIR.ListItemID  WHERE Item.ListCode = @ListCode  AND Item.ListItemLongValue LIKE ISNULL('%' @mask '%', NULL)  AND Item.ListItemID IN (SELECT ITEMS FROM dbo.Split(@id, '|'))  

В последней строке мой @id параметр может быть равен нулю. Как я могу проверить значение NULL для @id параметра?

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

1. ISNULL('%' @mask '%', NULL) не имеет абсолютно никакого смысла, чего он пытается достичь?

Ответ №1:

Используйте IS NULL с OR :

 WHERE Item.ListCode = @ListCode AND Item.ListItemLongValue LIKE ISNULL('%' @mask '%', NULL) AND (  @id IS NULL  OR Item.ListItemID IN (SELECT ITEMS FROM dbo.Split(@id, '|')) )