Что считается лучшей практикой? Стандарт и / или пункт или случай тогда? - PullRequest
0 голосов
/ 21 декабря 2011

Следующие два оператора имеют незначительное время выполнения для относительно большой таблицы.Впоследствии мне стало интересно, что будет считаться лучшей практикой?Лично я думаю, что утверждение «case» (вариант 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

1 Ответ

4 голосов
/ 21 декабря 2011

Лично я не могу представить, чтобы кто-нибудь нашел версию CASE более понятной. Первый вариант - базовая логическая логика, которую каждый студент CS изучает и с которой нам всем должно быть очень удобно.

Кроме того, я даже не уверен, что ваши 2 выражения эквивалентны, отчасти потому, что выражение CASE в основном непостижимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...