0
次の2つのステートメントはどちらも、比較的大きなテーブルに対して実行時間が無視できる程度です。その後、私はより良い練習と見なされるだろうと思っていた?個人的には、「ケース」(オプション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文字列の比較は、デフォルトでは大文字と小文字を区別しません。したがって、 'upper'コールは不要です。 – drdwilcox