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
Libérer: 2025-01-11 11:12:42
original
985 Les gens l'ont consulté

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 :

WHERE co.DTEntered = CASE 
                          WHEN LEN('blah') = 0 
                               THEN co.DTEntered 
                          ELSE '2011-01-01' 
                     END 
Copier après la connexion

Cependant, la syntaxe suivante est incorrecte :

WHERE 
    CASE LEN('TestPerson')
        WHEN 0 THEN co.personentered  = co.personentered
   ELSE co.personentered LIKE '%TestPerson'
    END 
Copier après la connexion

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 :

WHERE (
        (LEN('TestPerson') = 0 
             AND co.personentered = co.personentered
        ) 
        OR 
        (LEN('TestPerson') <> 0 
             AND co.personentered LIKE '%TestPerson')
      )
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal