ホームページ >データベース >mysql チュートリアル >SQL Server 2008 の WHERE 句で CASE ステートメントを正しく使用するにはどうすればよいですか?
SQL Server 2008: WHERE 句での CASE ステートメントの正しい使用
SQL Server 2008 の CASE
句内で WHERE
ステートメントを使用すると、構文が正確でないとエラーが発生する可能性があります。 このガイドでは、適切な使用法を明確にし、代替案を提供します。
正しい CASE
ステートメントの配置
CASE
ステートメントは、独立した条件ではなく、WHERE
句内のより大きな式の一部である必要があります。 例:
<code class="language-sql">WHERE co.DTEntered = CASE WHEN LEN('blah') = 0 THEN co.DTEntered ELSE '2011-01-01' END</code>
一般的な構文エラー
次の例は、エラーが発生する間違った使用法を示しています。
<code class="language-sql">WHERE CASE LEN('TestPerson') WHEN 0 THEN co.personentered = co.personentered ELSE co.personentered LIKE '%TestPerson' END </code>
より効率的な代替案: OR を使用する
より単純なシナリオの場合、OR
ステートメントを組み合わせると、CASE
句内で WHERE
を使用するよりも効率的で読みやすいソリューションが得られることがよくあります。
<code class="language-sql">WHERE ( (LEN('TestPerson') = 0 AND co.personentered = co.personentered ) OR (LEN('TestPerson') <> 0 AND co.personentered LIKE '%TestPerson') )</code>
パフォーマンスへの影響
複雑な WHERE
句は、CASE
ステートメントやその他の複雑なロジックを使用するかどうかに関係なく、クエリのパフォーマンスに悪影響を及ぼし、クエリ オプティマイザーがインデックスを効果的に利用する能力を妨げる可能性があります。 最良の結果を得るために、クエリ構造を常に注意深く分析して最適化してください。
以上がSQL Server 2008 の WHERE 句で CASE ステートメントを正しく使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。