Похоже, вам нужно включить их в свои where
условия, с некоторыми небольшими поправками к тому, что вы написали выше.
SELECT *
FROM TableName
WHERE (nn IS NULL OR dn like 'id=' + @nn + '%')
AND (user_id = @usrid)
AND (field1 IS NULL OR field1 = $wid)
Для первого и третьего условий мы инвертируем logi c по нулевой проверке и OR
с фактическими критериями. Таким образом, например, field1=$wid
оценивается только тогда, когда field1
равно not null
(поскольку он, если он равен нулю, первая часть критерия - field1 IS NULL
- оценивается как истина.
Я также изменил ваш $param$
синтаксис к более распространенному @param
, хотя он может варьироваться в зависимости от вашего sql вкуса.
Наконец, я не думаю, что здесь подходит оператор case
(как рекомендуют некоторые комментаторы), потому что вы хотите фильтровать разные столбцы по-разному, а не выводить по-разному для одного столбца на основе критериев (для которых вы обычно используете оператор CASE
).