Maison >base de données >tutoriel mysql >Comment puis-je utiliser correctement une instruction CASE dans une clause WHERE de SQL Server 2008 ?
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 clausesWHERE
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!