Maison >base de données >tutoriel mysql >Comment puis-je utiliser correctement les instructions CASE imbriquées dans les clauses WHERE de SQL Server 2008 ?

Comment puis-je utiliser correctement les instructions CASE imbriquées dans les clauses WHERE de SQL Server 2008 ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-11 11:12:42934parcourir

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

Utilisation d'instructions CASE imbriquées dans la clause WHERE dans SQL Server 2008

Lors de l'utilisation de SQL Server 2008, les utilisateurs peuvent rencontrer des difficultés lors de l'utilisation des instructions CASE dans la clause WHERE. Les messages d'erreur résultent souvent d'un placement incorrect de ces expressions conditionnelles.

Le problème fondamental est la syntaxe. L'instruction "CASE" doit être utilisée dans le cadre d'une expression et non comme l'expression elle-même. Par exemple, vous pouvez écrire :

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

Cependant, la syntaxe suivante est incorrecte :

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

Pour résoudre ce problème, une approche plus appropriée consiste à utiliser une instruction OR combinée. La requête modifiée ressemble à ceci :

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

Bien que cette approche puisse atténuer les erreurs de syntaxe, sachez que les instructions CASE fortement imbriquées dans la clause WHERE peuvent entraver l'optimisation des requêtes. La présence de ces expressions conditionnelles empêche l’utilisation de l’index, ce qui peut entraîner de mauvaises performances des requêtes.

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