Следующие два оператора имеют незначительное время выполнения над относительно большой таблицей. Впоследствии я задавался вопросом, что будет считаться лучшей практикой? Лично я считаю, что заявление «случай» (вариант 2) читает намного легче тем, кто смотрит на это через год, однако вариант 1 кажется намного более чистым.Что считается лучшей практикой? Стандарт и/или предложение или случай?
Вариант № 1:
select *
from imaginarytable
where 1=1
and (@section_name = 'ALL' or upper(section_name) = upper(@section_name))
Вариант № 2:
select *
from imaginarytable
where 1=1
and upper(section_name)=
case when @section_name <> 'ALL'
then upper(@section_name
else upper(section_name)
end
Я не думаю, что они эквивалентны. – Bernard
Очень хорошие очки. Оцените быструю обратную связь. – Codingo
Другая, несвязанная точка. Сравнение строк SQL по умолчанию нечувствительно к регистру. Поэтому «верхние» вызовы не нужны. – drdwilcox