ホームページ >データベース >mysql チュートリアル >SQL Server 2008 の WHERE 句でネストされた CASE ステートメントを正しく使用するにはどうすればよいですか?
SQL Server 2008 の WHERE 句でのネストされた CASE ステートメントの使用
SQL Server 2008 を使用する場合、WHERE 句で CASE ステートメントを使用するときに問題が発生する可能性があります。エラー メッセージは、これらの条件式の配置が間違っていることが原因で発生することがよくあります。
根本的な問題は構文です。 「CASE」ステートメントは、式自体としてではなく、式の一部として使用する必要があります。たとえば、次のように書くことができます:
<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 ステートメントを組み合わせて使用するのがより適切な方法です。変更されたクエリは次のようになります:
<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 サイトの他の関連記事を参照してください。