Есть таблица Category (ID, заголовок, описание, parentID, friendlyUrl, categoryTypeID).
Значение поля parentID может быть нулевым.
Как выбрать строки, которые имеют только parentID = null, если @ParentID = null.
declare @ID int =null
declare @FriendlyUrl nvarchar(30) = null
declare @ParentID int = null
declare @CategoryTypeID int = 0
select * from Category
where
(@ID is null or ID = @ID)
and (@FriendlyUrl is null or FriendlyUrl=@FriendlyUrl)
and (@ParentID is null or ParentID=@ParentID)
and (@CategoryTypeID is null or CategoryTypeID=@CategoryTypeID)
Этот запрос выбирает все строки, у которых parentID = @ ParentID, если @ParentID = указанное значение int (это правильно).
Но если @ParentID = null, он выбирает все строки (это неправильно).