まず、CASE
ステートメントは一部である必要があります 式自体ではなく、式の。
言い換えれば、あなたは持つことができます:
WHERE co.DTEntered = CASE
WHEN LEN('blah') = 0
THEN co.DTEntered
ELSE '2011-01-01'
END
しかし、それはあなたがそれらを書いたようには機能しません。例:
WHERE
CASE LEN('TestPerson')
WHEN 0 THEN co.personentered = co.personentered
ELSE co.personentered LIKE '%TestPerson'
END
次のようなORステートメントを組み合わせて使用すると幸運が訪れるかもしれません:
WHERE (
(LEN('TestPerson') = 0
AND co.personentered = co.personentered
)
OR
(LEN('TestPerson') <> 0
AND co.personentered LIKE '%TestPerson')
)
ただし、どちらの方法でも、クエリプランがどれほど優れているかはわかりません。 WHERE
にあるこれらのタイプのシェナニガン 句は、クエリオプティマイザがインデックスを利用できないようにすることがよくあります。