ホームページ >データベース >mysql チュートリアル >SQL Server 2008 の WHERE 句でネストされた CASE ステートメントを正しく使用するにはどうすればよいですか?

SQL Server 2008 の WHERE 句でネストされた CASE ステートメントを正しく使用するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-11 11:12:42932ブラウズ

How Can I Correctly Use Nested CASE Statements in SQL Server 2008 WHERE Clauses?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。