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 ?
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!