Maison >base de données >tutoriel mysql >Comment puis-je utiliser correctement une instruction CASE dans une clause WHERE de SQL Server 2008 ?

Comment puis-je utiliser correctement une instruction CASE dans une clause WHERE de SQL Server 2008 ?

DDD
DDDoriginal
2025-01-11 10:50:43326parcourir

How Can I Correctly Use a CASE Statement in a SQL Server 2008 WHERE Clause?

SQL Server 2008 : utilisation correcte des instructions CASE dans les clauses WHERE

L'utilisation d'instructions CASE dans les clauses WHERE dans SQL Server 2008 peut entraîner des erreurs si la syntaxe n'est pas précisément correcte. Ce guide clarifie l'utilisation appropriée et propose des alternatives.

Corriger CASE Placement de la déclaration

L'instruction CASE doit faire partie d'une expression plus large au sein de la clause WHERE, et non une condition autonome. Par exemple :

<code class="language-sql">WHERE co.DTEntered = CASE 
                          WHEN LEN('blah') = 0 
                               THEN co.DTEntered 
                          ELSE '2011-01-01' 
                     END</code>

Erreurs de syntaxe courantes

L'exemple suivant illustre une utilisation incorrecte qui entraînera des erreurs :

<code class="language-sql">WHERE 
    CASE LEN('TestPerson')
        WHEN 0 THEN co.personentered  = co.personentered
        ELSE co.personentered LIKE '%TestPerson'
    END </code>

Une alternative plus efficace : utiliser OR

Pour des scénarios plus simples, combiner les instructions OR fournit souvent une solution plus efficace et plus lisible que l'utilisation de CASE dans la clause WHERE :

<code class="language-sql">WHERE (
        (LEN('TestPerson') = 0 
             AND co.personentered = co.personentered
        ) 
        OR 
        (LEN('TestPerson') <> 0 
             AND co.personentered LIKE '%TestPerson')
      )</code>

Implications sur les performances

Les clauses

WHERE complexes, qu'elles utilisent ou non des instructions CASE ou une autre logique complexe, peuvent avoir un impact négatif sur les performances des requêtes et entraver la capacité de l'optimiseur de requêtes à utiliser efficacement les index. Analysez et optimisez toujours soigneusement votre structure de requête pour de meilleurs résultats.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn