Я исследовал этот сценарий в течение нескольких часов, но, похоже, не могу найти ничего, что обращалось бы к нему напрямую.
У меня есть много необязательных параметров, переданных в сохраненный процесс.Я хочу вернуть набор записей, который не фильтруется ни одним, а один или несколько необязательных параметров передаются в сохраненный процесс.
Я пытаюсь создать один запрос для этого.
Вот мой псевдокод (SQL Server 2005):
declare @a varchar(10); set @a = null;
declare @b varchar(10); set @b = 'comm%';
select * from x
where (if @a is not null then col1 like @a)
and (if @b is not null then col2 like @b)
Как видите, я хочу фильтровать только по col1 , если мой параметр (@a) содержит данные.Точно так же я хочу фильтровать только col2 , если в моем параметре (@b) есть данные.Если @a и @b равны NULL, то запрос должен вернуть все строки.
Я нашел несколько потоков, которые приближаются к тому, что я хочу, но ни один из них не обращается с использованием предложения LIKE.